home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS14.ADF / Tool / file < prev    next >
Text File  |  1989-01-28  |  82KB  |  2,348 lines

  1. !DateStamp
  2. /include/libraries/dos.h
  3. struct DateStamp {
  4.    LONG  ds_Days;             /* Number of days since Jan. 1, 1978 */
  5.    LONG  ds_Minute;           /* Number of minutes past midnight */
  6.    LONG  ds_Tick;             /* Number of ticks past minute */
  7. }; /* DateStamp */
  8. !FileInfoBlock
  9. /include/libraries/dos.h
  10. struct FileInfoBlock {
  11.    LONG   fib_DiskKey;
  12.    LONG   fib_DirEntryType;  /* Type of Directory. If < 0, then a plain file.
  13.                               * If > 0 a directory */
  14.    char   fib_FileName[108]; /* Null terminated. Max 30 chars used for now */
  15.    LONG   fib_Protection;    /* bit mask of protection, rwxd are 3-0.      */
  16.    LONG   fib_EntryType;
  17.    LONG   fib_Size;          /* Number of bytes in file */
  18.    LONG   fib_NumBlocks;     /* Number of blocks in file */
  19.    struct DateStamp fib_Date;/* Date file last changed */
  20.    char   fib_Comment[116];  /* Null terminated. 
  21.                               * Comment associated with file */
  22. }; /* FileInfoBlock */
  23. !InfoData
  24. /include/libraries/dos.h
  25. struct InfoData { 
  26.    LONG   id_NumSoftErrors;    /* number of soft errors on disk */
  27.    LONG   id_UnitNumber;    /* Which unit disk is (was) mounted on */
  28.    LONG   id_DiskState;        /* See defines below */
  29.    LONG   id_NumBlocks;        /* Number of blocks on disk */
  30.    LONG   id_NumBlocksUsed;    /* Number of block in use */
  31.    LONG   id_BytesPerBlock;   
  32.    LONG   id_DiskType;        /* Disk Type code */
  33.    BSTR   id_VolumeNode;    /* BCPL pointer to volume name (BCPL string) */
  34.    LONG   id_InUse;        /* Flag, zero if not in use */
  35. }; /* InfoData */
  36. !Process
  37. /include/libraries/dosextens.h
  38. struct Process {
  39.     struct  Task    pr_Task;         
  40.     struct  MsgPort pr_MsgPort; /* This is BPTR address from DOS functions  */
  41.     WORD    pr_Pad;             /* Remaining variables on 4 byte boundaries */
  42.     BPTR    pr_SegList;         /* Array of seg lists used by this process  */
  43.     LONG    pr_StackSize;       /* Size of process stack in bytes           */
  44.     APTR    pr_GlobVec;         /* Global vector for this process (BCPL)    */
  45.     LONG    pr_TaskNum;         /* CLI task number of zero if not a CLI     */
  46.     BPTR    pr_StackBase;       /* Ptr to high memory end of process stack  */
  47.     LONG    pr_Result2;         /* Value of secondary result from last call */
  48.     BPTR    pr_CurrentDir;      /* Lock associated with current directory   */
  49.     BPTR    pr_CIS;             /* Current CLI Input Stream                 */
  50.     BPTR    pr_COS;             /* Current CLI Output Stream                */
  51.     APTR    pr_ConsoleTask;     /* Console handler process for current window*/
  52.     APTR    pr_FileSystemTask;  /* File handler process for current drive   */
  53.     BPTR    pr_CLI;             /* pointer to ConsoleLineInterpreter        */
  54.     APTR    pr_ReturnAddr;      /* pointer to previous stack frame          */
  55.     APTR    pr_PktWait;         /* Function to be called when awaiting msg  */
  56.     APTR    pr_WindowPtr;       /* Window for error printing */
  57. };  /* Process */
  58. !FileHandle
  59. /include/libraries/dosextens.h
  60. struct FileHandle {
  61.    struct Msg     *fh_Link;      /* EXEC message              */   
  62.    struct MsgPort *fh_Port;      /* Reply port for the packet */
  63.    struct MsgPort *fh_Type;      /* Port to do PutMsg() to  
  64.                                   * Address is negative if a plain file */
  65.    LONG fh_Buf;
  66.    LONG fh_Pos;
  67.    LONG fh_End;
  68.    LONG fh_Funcs;
  69. #define fh_Func1 fh_Funcs
  70.    LONG fh_Func2;
  71.    LONG fh_Func3;
  72.    LONG fh_Args;
  73. #define fh_Arg1 fh_Args
  74.    LONG fh_Arg2;
  75. }; /* FileHandle */
  76. !DosPacket
  77. /include/libraries/dosextens.h
  78. struct DosPacket {
  79.    struct Msg     *dp_Link;      /* EXEC message              */
  80.    struct MsgPort *dp_Port;      /* Reply port for the packet */
  81.                                  /* Must be filled in each send. */
  82.    LONG dp_Type;                 /* See ACTION_... below and 
  83.                                   * 'R' means Read, 'W' means Write to the
  84.                                   * file system */
  85.    LONG dp_Res1;                 /* For file system calls this is the result
  86.                                   * that would have been returned by the
  87.                                   * function, e.g. Write ('W') returns actual
  88.                                   * length written */
  89.    LONG dp_Res2;                 /* For file system calls this is what would
  90.                                   * have been returned by IoErr() */
  91. /*  Device packets common equivalents */
  92. #define dp_Action  dp_Type
  93. #define dp_Status  dp_Res1
  94. #define dp_Status2 dp_Res2
  95. #define dp_BufAddr dp_Arg1
  96.    LONG dp_Arg1;                    
  97.    LONG dp_Arg2;
  98.    LONG dp_Arg3;
  99.    LONG dp_Arg4;
  100.    LONG dp_Arg5;
  101.    LONG dp_Arg6;
  102.    LONG dp_Arg7;
  103. }; /* DosPacket */
  104. !StandardPacket
  105. /include/libraries/dosextens.h
  106. struct StandardPacket {
  107.    struct Message   sp_Msg;
  108.    struct DosPacket sp_Pkt;
  109. }; /* StandardPacket */
  110. !DosLibrary
  111. /include/libraries/dosextens.h
  112. struct DosLibrary {
  113.     struct  Library dl_lib;
  114.     APTR    dl_Root;          /* Pointer to RootNode, described below */
  115.     APTR    dl_GV;            /* Pointer to BCPL global vector        */
  116.     LONG    dl_A2;            /* Private register dump of DOS         */
  117.     LONG    dl_A5;
  118.     LONG    dl_A6;
  119. };  /*  DosLibrary */
  120. !RootNode
  121. /include/libraries/dosextens.h
  122. struct RootNode {
  123.     BPTR    rn_TaskArray;            /* [0] is max number of CLI's
  124.                                       * [1] is APTR to process id of CLI 1
  125.                                       * [n] is APTR to process id of CLI n */
  126.     BPTR    rn_ConsoleSegment; /* SegList for the CLI                      */ 
  127.     struct  DateStamp rn_Time; /* Current time                             */
  128.     LONG    rn_RestartSeg;     /* SegList for the disk validator process   */
  129.     BPTR    rn_Info;           /* Pointer ot the Info structure            */
  130. };  /* RootNode */
  131. !DosInfo
  132. /include/libraries/dosextens.h
  133. struct DosInfo {
  134.     BPTR    di_McName;         /* Network name of this machine; currently 0 */
  135.     BPTR    di_DevInfo;        /* Device List                               */
  136.     BPTR    di_Devices;        /* Currently zero                            */
  137.     BPTR    di_Handlers;       /* Currently zero                            */
  138.     APTR    di_NetHand;        /* Network handler processid; currently zero */
  139. };  /* DosInfo */
  140. !CommandLineInterface
  141. /include/libraries/dosextens.h
  142. struct CommandLineInterface {
  143.     LONG   cli_Result2;        /* Value of IoErr from last command        */  
  144.     BSTR   cli_SetName;        /* Name of current directory               */
  145.     BPTR   cli_CommandDir;     /* Lock associated with command directory  */
  146.     LONG   cli_ReturnCode;     /* Return code from last command           */
  147.     BSTR   cli_CommandName;    /* Name of current command                 */
  148.     LONG   cli_FailLevel;      /* Fail level (set by FAILAT)              */
  149.     BSTR   cli_Prompt;         /* Current prompt (set by PROMPT)          */
  150.     BPTR   cli_StandardInput;  /* Default (terminal) CLI input            */
  151.     BPTR   cli_CurrentInput;   /* Current CLI input                       */
  152.     BSTR   cli_CommandFile;    /* Name of EXECUTE command file            */
  153.     LONG   cli_Interactive;    /* Boolean; True if prompts required       */
  154.     LONG   cli_Background;     /* Boolean; True if CLI created by RUN     */
  155.     BPTR   cli_CurrentOutput;  /* Current CLI output                      */
  156.     LONG   cli_DefaultStack;   /* Stack size to be obtained in long words */
  157.     BPTR   cli_StandardOutput; /* Default (terminal) CLI output           */
  158.     BPTR   cli_Module;         /* SegList of currently loaded command     */
  159. };  /* CommandLineInterface */
  160. !DeviceList
  161. /include/libraries/dosextens.h
  162. struct DeviceList {
  163.     BPTR        dl_Next;    /* bptr to next device list */
  164.     LONG        dl_Type;    /* see DLT below */
  165.     struct MsgPort *    dl_Task;    /* ptr to handler task */
  166.     BPTR        dl_Lock;    /* not for volumes */
  167.     struct DateStamp    dl_VolumeDate;    /* creation date */
  168.     BPTR        dl_LockList;    /* outstanding locks */
  169.     LONG        dl_DiskType;    /* 'DOS', etc */
  170.     LONG        dl_unused;
  171.     BSTR *        dl_Name;    /* bptr to bcpl name */
  172. };
  173. !FileLock
  174. /include/libraries/dosextens.h
  175. struct FileLock {
  176.     BPTR        fl_Link;    /* bcpl pointer to next lock */
  177.     LONG        fl_Key;        /* disk block number */
  178.     LONG        fl_Access;    /* exclusive or shared */
  179.     struct MsgPort *    fl_Task;    /* handler task's port */
  180.     BPTR        fl_Volume;    /* bptr to a DeviceList */
  181. };
  182. !FontContents
  183. /include/libraries/diskfont.h
  184. struct FontContents {
  185.     char    fc_FileName[MAXFONTPATH];
  186.     UWORD    fc_YSize;
  187.     UBYTE    fc_Style;
  188.     UBYTE    fc_Flags;
  189. };
  190. !FontContentsHeader
  191. /include/libraries/diskfont.h
  192. struct FontContentsHeader {
  193.     UWORD    fch_FileID;    /* FCH_ID */
  194.     UWORD    fch_NumEntries;    /* the number of FontContents elements */
  195.     /*    struct FontContents fch_FC[]; */
  196. };
  197. !DiskFontHeader
  198. /include/libraries/diskfont.h
  199. struct DiskFontHeader {
  200.     /* the following 8 bytes are not actually considered a part of the
  201.     /* DiskFontHeader, but immediately preceed it.  The NextSegment is supplied
  202.     /* by the linker/loader, and the ReturnCode is the code at the beginning
  203.     /* of the font in case someone runs it...
  204.     /*    ULONG    dfh_NextSegment;/* actually a BPTR */
  205.     /*    ULONG    dfh_ReturnCode;    /* MOVEQ #0,D0 : RTS */
  206.     /* here then is the official start of the DiskFontHeader...        */
  207.     struct    Node dfh_DF;    /* node to link disk fonts */
  208.     UWORD    dfh_FileID;    /* DFH_ID */
  209.     UWORD    dfh_Revision;    /* the font revision */
  210.     LONG    dfh_Segment;    /* the segment address when loaded */
  211.     char    dfh_Name[MAXFONTNAME];    /* the font name (null terminated) */
  212.     struct    TextFont dfh_TF;/* loaded TextFont structure */
  213. };
  214. !AvailFonts
  215. /include/libraries/diskfont.h
  216. struct AvailFonts {
  217.     UWORD    af_Type;        /* MEMORY or DISK */
  218.     struct    TextAttr af_Attr;    /* text attributes for font */
  219. };
  220. !AvailFontsHeader
  221. /include/libraries/diskfont.h
  222. struct AvailFontsHeader {
  223.     UWORD    afh_NumEntries;        /* number of AvailFonts elements */
  224.     /*    struct    AvailFonts afh_AF[]; */
  225. };
  226. !SendPacket
  227. /include/workbench/workbenchbase.h
  228. struct SendPacket {
  229.     UWORD               sp_Type;        /* for ioloop */
  230.     struct Message      sp_Message;
  231.     UWORD               sp_pad;
  232.     LONG                sp_Data[PKT_LENGTH];
  233. };
  234. !WorkbenchBase
  235. /include/workbench/workbenchbase.h
  236. struct WorkbenchBase {
  237.     struct Library    wb_Library;
  238.  
  239.     /* the work bench status flags */
  240.     UWORD        wb_Shifted : 1;        /* the shift key is down */
  241.     UWORD        wb_Dragging : 1;    /* not used?? */
  242.     UWORD        wb_DoubleClick : 1;    /* we just double clicked */
  243.     UWORD        wb_SpecialGadget : 1;    /* last gadget was special */
  244.     UWORD        wb_InputTrashed : 1;    /* Don't believe SELECTUP */
  245.     UWORD        wb_ErrorDisplayed : 1;    /* ErrorTitle is up */
  246.     UWORD        wb_NameChange : 1;    /* Name Change win is up */
  247.     UWORD        wb_Closed : 1;        /* WB screen is closed */
  248.     UWORD        wb_KPrintfOK : 1;    /* ok to send kprintf's */
  249.  
  250.     /* our three major lists.  Every object is on the master list.
  251.      * The highlighted (selected) icons are on the select list.
  252.      * all disks that we have "active" are on the active list.
  253.      */
  254.     struct List        wb_MasterList;
  255.     struct List        wb_SelectList;
  256.     struct List        wb_ActiveDisks;
  257.     struct List        wb_UtilityList;
  258.  
  259.     /* two string buffers to save us from allocating memory */
  260.     /* THESE MUST BE LONG WORD ALLIGNED */
  261.     UBYTE         wb_Buf0[WBBUFSIZE];
  262.     UBYTE         wb_Buf1[WBBUFSIZE];
  263.     struct SendPacket    wb_SendPacket;
  264.  
  265.     /* longword allign this stuff */
  266.     BYTE        wb_UpdateNestCnt;
  267.     BYTE        wb_DiskIONestCnt;
  268.  
  269.     /* all of our library bases */
  270.     APTR        wb_SysBase;
  271.     APTR        wb_GfxBase;
  272.     APTR        wb_IntuitionBase;
  273.     APTR        wb_IconBase;
  274.     APTR        wb_DOSBase;
  275.     APTR        wb_MathBase;
  276.     APTR        wb_LayersBase;
  277.     APTR        wb_TimerBase;
  278.  
  279.     /* we really want the device list, but it changes too often */
  280.     struct DosInfo *    wb_DosInfo;
  281.  
  282.     /* a pointer to a timer request, so we can free it later */
  283.     struct timerequest *wb_TimerRequest;
  284.  
  285.     /* the mouse position of the last select press */
  286.     UWORD        wb_XOffset;
  287.     UWORD        wb_YOffset;
  288.  
  289.     /* the base of the workbench object tree */
  290.     struct WBObject *    wb_RootObject;
  291.  
  292.     /* some current pointers -- some of these should be deleted */
  293.     struct Gadget *    wb_CurrentGadget;
  294.     struct Window *    wb_CurrentWindow;
  295.     struct WBObject *    wb_CurrentObject;
  296.  
  297.     /* alternate pointer images */
  298.     USHORT *        wb_SelectPointer;
  299.     USHORT *        wb_WaitPointer;
  300.  
  301.     /* misc stuff */
  302.     struct Menu *    wb_MenuStrip;
  303.     char *        wb_CurrentError;
  304.     ULONG        wb_LastFreeMem;
  305.     struct TextFont *    wb_TextFont;
  306.     struct CoRoutine *    wb_CoCurrent;
  307.  
  308.     /* images must be in chip memory */
  309.     struct Image     wb_GadgetImage[4];
  310.     USHORT        wb_GadgetData[4][8];
  311.  
  312.     /* two message ports -- one for intuition, and one for all reasonable
  313.      * applications that let you allocate your messages yourself....
  314.      */
  315.     struct MsgPort    wb_WorkbenchPort;
  316.     struct MsgPort    wb_IntuiPort;
  317.  
  318.     /* the last time we saw a key-down */
  319.     struct timeval    wb_Tick;
  320.  
  321.     /* the screen title */
  322.     UBYTE        wb_ScreenTitle[60];
  323.  
  324.     /* what we need to paint text */
  325.     struct RastPort    wb_TextRast;
  326.  
  327.     /* the argument that we were initialized with */
  328.     ULONG        wb_Argument;
  329.  
  330.     /* the workbench task */
  331.     ULONG        wb_Task;
  332. };
  333. !ActiveDisk
  334. /include/workbench/workbenchbase.h
  335. struct ActiveDisk {
  336.     struct Node        ad_Node;
  337.     UBYTE        ad_Active;
  338.     UBYTE        ad_pad;
  339.     struct MsgPort *    ad_Handler;
  340.     UBYTE *        ad_Name;
  341.     struct WBObject *    ad_Object;
  342.     BPTR         ad_Volume;
  343.     struct InfoData    ad_Info;
  344.     struct DateStamp    ad_CreateTime;
  345. };
  346. !WBStartup
  347. /include/workbench/startup.h
  348. struct WBStartup {
  349.     struct Message    sm_Message;    /* a standard message structure */
  350.     struct MsgPort *    sm_Process;    /* the process descriptor for you */
  351.     BPTR        sm_Segment;    /* a descriptor for your code */
  352.     LONG        sm_NumArgs;    /* the number of elements in ArgList */
  353.     char *        sm_ToolWindow;    /* description of window */
  354.     struct WBArg *    sm_ArgList;    /* the arguments themselves */
  355. };
  356. !WBArg
  357. /include/workbench/startup.h
  358. struct WBArg {
  359.     BPTR        wa_Lock;    /* a lock descriptor */
  360.     BYTE *        wa_Name;    /* a string relative to that lock */
  361. };
  362. !DrawerData
  363. /include/workbench/workbench.h
  364. struct DrawerData {
  365.     struct NewWindow    dd_NewWindow;    /* args to open window */
  366.     LONG        dd_CurrentX;    /* current x coordinate of origin */
  367.     LONG        dd_CurrentY;    /* current y coordinate of origin */
  368.     LONG        dd_MinX;    /* smallest x coordinate in window */
  369.     LONG        dd_MinY;    /* smallest y coordinate in window */
  370.     LONG        dd_MaxX;    /* largest x coordinate in window */
  371.     LONG        dd_MaxY;    /* largest y coordinate in window */
  372.     struct Gadget    dd_HorizScroll;
  373.     struct Gadget    dd_VertScroll;
  374.     struct Gadget    dd_UpMove;
  375.     struct Gadget    dd_DownMove;
  376.     struct Gadget    dd_LeftMove;
  377.     struct Gadget    dd_RightMove;
  378.     struct Image    dd_HorizImage;
  379.     struct Image    dd_VertImage;
  380.     struct PropInfo    dd_HorizProp;
  381.     struct PropInfo    dd_VertProp;
  382.     struct Window *    dd_DrawerWin;    /* pointer to drawers window */
  383.     struct WBObject *    dd_Object;    /* back pointer to drawer object */
  384.     struct List        dd_Children;    /* where our children hang out */
  385.     LONG        dd_Lock;
  386. };
  387. !DiskObject
  388. /include/workbench/workbench.h
  389. struct DiskObject {
  390.     UWORD        do_Magic; /* a magic number at the start of the file */
  391.     UWORD        do_Version; /* a version number, so we can change it */
  392.     struct Gadget     do_Gadget;    /* a copy of in core gadget */
  393.     enum WBObjectType     do_Type;
  394.     char *        do_DefaultTool;
  395.     char **        do_ToolTypes;
  396.     LONG        do_CurrentX;
  397.     LONG        do_CurrentY;
  398.     struct DrawerData *    do_DrawerData;
  399.     char *        do_ToolWindow;    /* only applies to tools */
  400.     LONG        do_StackSize;    /* only applies to tools */
  401.  
  402. };
  403. !FreeList
  404. /include/workbench/workbench.h
  405. struct FreeList {
  406.     WORD        fl_NumFree;
  407.     struct List        fl_MemList;
  408. };
  409. !WBObject
  410. /include/workbench/workbench.h
  411. struct WBObject {
  412.     struct Node        wo_MasterNode;    /* all objects are on this list */
  413.     struct Node        wo_Siblings;    /* list of drawer members */
  414.     struct Node        wo_SelectNode;    /* list of all selected objects */
  415.     struct Node        wo_UtilityNode;    /* function specific linkages */
  416.     struct WBObject *    wo_Parent;
  417.  
  418.     /* object flags */
  419.     UWORD        wo_IconDisp:1;    /* icon is currently in a window */
  420.     UWORD        wo_DrawerOpen:1;/* we're a drawer, and it is open */
  421.     UWORD        wo_Selected:1;    /* our icon is selected */
  422.     UWORD        wo_Background:1;/* set if icon is in background */
  423.  
  424.     enum WBObjectType    wo_Type;    /* what flavor object is this? */
  425.     USHORT        wo_UseCount;    /* number of references to this obj */
  426.     char *        wo_Name;    /* this object's textual name */
  427.     SHORT        wo_NameXOffset;    /* where to put the name */
  428.     SHORT        wo_NameYOffset;
  429.  
  430.     char *        wo_DefaultTool;
  431.     struct DrawerData *    wo_DrawerData;    /* if this is a drawer or disk */
  432.     struct Window *    wo_IconWin;     /* each object's icon lives here */
  433.     LONG        wo_CurrentX;    /* virtual X in drawer */
  434.     LONG        wo_CurrentY;    /* virtual Y in drawer */
  435.     char **        wo_ToolTypes;    /* the types for this tool */
  436.     struct Gadget    wo_Gadget;    /* NOT a ptr, but an instance of it */
  437.     struct FreeList    wo_FreeList;    /* this objects free list */
  438.     char *        wo_ToolWindow;    /* character string for tool's window */
  439.     LONG        wo_StackSize;    /* how much stack to give to this */
  440.     LONG        wo_Lock;    /* if this tool is in the backdrop */
  441.  
  442. };
  443. !Library
  444. /include/exec/libraries.h
  445. struct Library {
  446.     struct  Node lib_Node;
  447.     UBYTE   lib_Flags;
  448.     UBYTE   lib_pad;
  449.     UWORD   lib_NegSize;       /* number of bytes before library */
  450.     UWORD   lib_PosSize;       /* number of bytes after library */
  451.     UWORD   lib_Version;
  452.     UWORD   lib_Revision;
  453.     APTR    lib_IdString;
  454.     ULONG   lib_Sum;          /* the checksum itself */
  455.     UWORD   lib_OpenCnt;       /* number of current opens */
  456. };
  457. !ExecBase
  458. /include/exec/execbase.h
  459. struct ExecBase {
  460.     struct Library  LibNode;
  461.  
  462.     UWORD    SoftVer;    /* soft (RAM) revision of EXEC     */
  463.     WORD    LowMemChkSum;
  464.     ULONG    ChkBase;    /* system base pointer complement */
  465.     APTR    ColdCapture;    /* coldstart soft vector      */
  466.     APTR     CoolCapture;
  467.     APTR    WarmCapture;
  468.     APTR    SysStkUpper;    /* system stack base (upper bound) */
  469.     APTR    SysStkLower;    /* top of system stack (lower bound) */
  470.     ULONG    MaxLocMem;
  471.     APTR    DebugEntry;
  472.     APTR    DebugData;
  473.     APTR    AlertData;
  474.     APTR    RsvdExt;
  475.  
  476.     UWORD    ChkSum;
  477.  
  478. /****** Interrupt Related ***************************************/
  479.  
  480.     struct    IntVector IntVects[16];
  481.  
  482. /****** System Variables ****************************************/
  483.  
  484.     struct    Task *ThisTask;    /* pointer to current task */
  485.     ULONG    IdleCount;    /* idle counter */
  486.     ULONG    DispCount;    /* dispatch counter */
  487.     UWORD    Quantum;    /* time slice quantum */
  488.     UWORD    Elapsed;    /* current quantum ticks */
  489.     UWORD    SysFlags;    /* misc system flags */
  490.     BYTE    IDNestCnt;    /* interrupt disable nesting count */
  491.     BYTE    TDNestCnt;    /* task disable nesting count */
  492.  
  493.     UWORD    AttnFlags;    /* interrupt attention */
  494.     UWORD    AttnResched;    /* rescheduling attention */
  495.     APTR    ResModules;    /* resident module array pointer */
  496.  
  497.     APTR    TaskTrapCode;
  498.     APTR    TaskExceptCode;
  499.     APTR    TaskExitCode;
  500.     ULONG    TaskSigAlloc;
  501.     UWORD    TaskTrapAlloc;
  502.  
  503.  
  504. /****** System Lists ********************************************/
  505.  
  506.     struct    List MemList;
  507.     struct    List ResourceList;
  508.     struct    List DeviceList;
  509.     struct    List IntrList;
  510.     struct    List LibList;
  511.     struct    List PortList;
  512.     struct    List TaskReady;
  513.     struct    List TaskWait;
  514.  
  515.     struct    SoftIntList SoftInts[5];
  516.  
  517. /****** Other Globals *******************************************/
  518.  
  519.     LONG    LastAlert[4];
  520.  
  521.     LONG    ExecBaseReserved[8];
  522. };
  523. !Interrupt
  524. /include/exec/interrupts.h
  525. struct Interrupt {
  526.     struct  Node is_Node; 
  527.     APTR    is_Data;            /* server data segment  */
  528.     VOID    (*is_Code)();        /* server code entry    */
  529. };
  530. !IntVector
  531. /include/exec/interrupts.h
  532. struct IntVector {        /* For EXEC use ONLY! */
  533.     APTR    iv_Data;
  534.     VOID    (*iv_Code)();
  535.     struct  Node *iv_Node;
  536. };
  537. !SoftIntList
  538. /include/exec/interrupts.h
  539. struct SoftIntList {        /* For EXEC use ONLY! */
  540.     struct List sh_List;
  541.     UWORD  sh_Pad;
  542. };
  543. !Device
  544. /include/exec/devices.h
  545. struct Device { 
  546.     struct  Library dd_Library;
  547. };
  548. !Unit
  549. /include/exec/devices.h
  550. struct Unit {
  551.     struct  MsgPort *unit_MsgPort;    /* queue for unprocessed messages */
  552.     UBYTE   unit_flags;
  553.     UBYTE   unit_pad;
  554.     UWORD   unit_OpenCnt;        /* number of active opens */
  555. };
  556. !Resident
  557. /include/exec/resident.h
  558. struct Resident {
  559.     UWORD rt_MatchWord;        /* word to match on (ILLEGAL)     */
  560.     struct Resident *rt_MatchTag; /* pointer to the above    */
  561.     APTR  rt_EndSkip;        /* address to continue scan     */
  562.     UBYTE rt_Flags;          /* various tag flags         */
  563.     UBYTE rt_Version;        /* release version number     */
  564.     UBYTE rt_Type;           /* type of module (NT_mumble)     */
  565.     BYTE  rt_Pri;            /* initialization priority */
  566.     char  *rt_Name;           /* pointer to node name     */
  567.     char  *rt_IdString;        /* pointer to ident string     */
  568.     APTR  rt_Init;           /* pointer to init code     */
  569. };
  570. !Node
  571. /include/exec/nodes.h
  572. struct Node { 
  573.     struct  Node *ln_Succ;
  574.     struct  Node *ln_Pred;
  575.     UBYTE   ln_Type;
  576.     BYTE    ln_Pri; 
  577.     char    *ln_Name; 
  578. };
  579. !List
  580. /include/exec/lists.h
  581. struct List { 
  582.     struct  Node *lh_Head;
  583.     struct  Node *lh_Tail;
  584.     struct  Node *lh_TailPred;
  585.     UBYTE   lh_Type;
  586.     UBYTE   l_pad;
  587. };
  588. !IORequest
  589. /include/exec/io.h
  590. struct IORequest {
  591.     struct  Message io_Message;
  592.     struct  Device  *io_Device;        /* device node pointer  */
  593.     struct  Unit    *io_Unit;        /* unit (driver private)*/
  594.     UWORD   io_Command;            /* device command */
  595.     UBYTE   io_Flags;
  596.     BYTE    io_Error;            /* error or warning num */
  597. };
  598. !IOStdReq
  599. /include/exec/io.h
  600. struct IOStdReq {
  601.     struct  Message io_Message;
  602.     struct  Device  *io_Device;        /* device node pointer  */
  603.     struct  Unit    *io_Unit;        /* unit (driver private)*/
  604.     UWORD   io_Command;            /* device command */
  605.     UBYTE   io_Flags;
  606.     BYTE    io_Error;            /* error or warning num */
  607.     ULONG   io_Actual;            /* actual number of bytes transferred */
  608.     ULONG   io_Length;            /* requested number bytes transferred*/
  609.     APTR    io_Data;            /* points to data area */
  610.     ULONG   io_Offset;            /* offset for block structured devices */
  611. /*  ULONG   io_Reserved1;
  612.     ULONG   io_Reserved2;
  613. */
  614. };
  615. !MsgPort
  616. /include/exec/ports.h
  617. struct MsgPort {
  618.     struct  Node mp_Node; 
  619.     UBYTE   mp_Flags; 
  620.     UBYTE   mp_SigBit;            /* signal bit number    */
  621.     struct  Task *mp_SigTask;        /* task to be signalled */
  622.     struct  List mp_MsgList;        /* message linked list  */
  623. };
  624. !Message
  625. /include/exec/ports.h
  626. struct Message {
  627.     struct  Node mn_Node; 
  628.     struct  MsgPort *mn_ReplyPort;  /* message reply port */
  629.     UWORD   mn_Length;            /* message len in bytes */
  630. };
  631. !MemChunk
  632. /include/exec/memory.h
  633. struct  MemChunk {
  634.     struct  MemChunk *mc_Next;    /* pointer to next chunk */
  635.     ULONG   mc_Bytes;        /* chunk byte size    */
  636. };
  637. !MemHeader
  638. /include/exec/memory.h
  639. struct    MemHeader {
  640.     struct  Node mh_Node;
  641.     UWORD   mh_Attributes;    /* characteristics of this region */
  642.     struct  MemChunk *mh_First;    /* first free region        */
  643.     APTR    mh_Lower;        /* lower memory bound        */
  644.     APTR    mh_Upper;        /* upper memory bound+1        */
  645.     ULONG   mh_Free;        /* total number of free bytes    */ 
  646. };
  647. !MemEntry
  648. /include/exec/memory.h
  649. struct    MemEntry {
  650. union {
  651.     ULONG   meu_Reqs;        /* the AllocMem requirements */
  652.     APTR    meu_Addr;        /* the address of this memory region */
  653.     } me_Un;
  654.     ULONG   me_Length;        /* the length of this memory region */
  655. };
  656. !MemList
  657. /include/exec/memory.h
  658. struct    MemList {
  659.     struct  Node ml_Node;
  660.     UWORD   ml_NumEntries;    /* number of entries in this struct */
  661.     struct  MemEntry ml_ME[1];    /* the first entry    */
  662. };
  663. !TextAttr
  664. /include/graphics/text.h
  665. struct TextAttr {
  666.     STRPTR  ta_Name;        /* name of the font */
  667.     UWORD   ta_YSize;        /* height of the font */
  668.     UBYTE   ta_Style;        /* intrinsic font style */
  669.     UBYTE   ta_Flags;        /* font preferences and flags */
  670. };
  671. !TextFont
  672. /include/graphics/text.h
  673. struct TextFont {
  674.     struct Message tf_Message;    /* reply message for font removal */
  675.                 /* font name in LN          \      used in this */
  676.     UWORD   tf_YSize;        /* font height          |      order to best */
  677.     UBYTE   tf_Style;        /* font style          |      match a font */
  678.     UBYTE   tf_Flags;        /* preferences and flags  /      request. */
  679.     UWORD   tf_XSize;        /* nominal font width */
  680.     UWORD   tf_Baseline;    /* distance from the top of char to baseline */
  681.     UWORD   tf_BoldSmear;   /* smear to affect a bold enhancement */
  682.  
  683.     UWORD   tf_Accessors;   /* access count */
  684.  
  685.     UBYTE   tf_LoChar;        /* the first character described here */
  686.     UBYTE   tf_HiChar;        /* the last character described here */
  687.     APTR    tf_CharData;    /* the bit character data */
  688.  
  689.     UWORD   tf_Modulo;        /* the row modulo for the strike font data */
  690.     APTR    tf_CharLoc;        /* ptr to location data for the strike font */
  691.                 /*     2 words: bit offset then size */
  692.     APTR    tf_CharSpace;   /* ptr to words of proportional spacing data */
  693.     APTR    tf_CharKern;    /* ptr to words of kerning data */
  694. };
  695. !Layer
  696. /include/graphics/clip.h
  697. struct Layer
  698. {
  699.     struct  Layer *front,*back;     /* ignored by roms */
  700.     struct  ClipRect    *ClipRect;  /* read by roms to find first cliprect */
  701.     struct  RastPort    *rp;        /* ignored by roms, I hope */
  702.     struct  Rectangle   bounds;     /* ignored by roms */
  703.     UBYTE   Lock;           /* roms, obey locking/unlocking convention */
  704.     UBYTE   LockCount;      /* roms can nest their own locks and still work */
  705.     UBYTE   LayerLockCount;    /* lock counter used by layer software */
  706.     UBYTE    reserved;
  707.     UWORD    reserved1;
  708.     UWORD   Flags;          /* obscured ?, Virtual BitMap? */
  709.     struct  BitMap *SuperBitMap;
  710.     struct  ClipRect *SuperClipRect; /* super bitmap cliprects if VBitMap != 0*/
  711.                 /* else damage cliprect list for refresh */
  712.     APTR   Window;        /* reserved for user interface use */
  713.     SHORT   Scroll_X,Scroll_Y;
  714.     struct  MsgPort LockPort;
  715.     struct  Message LockMessage;
  716.     struct  MsgPort ReplyPort;
  717.     struct  Message l_LockMessage;
  718.     struct  Region  *DamageList;    /* list of rectangles to refresh through */
  719.     struct  ClipRect *_cliprects;   /* system use during refresh */
  720.     APTR    _p1;                    /* system use, reserved */
  721. };
  722. !ClipRect
  723. /include/graphics/clip.h
  724. struct ClipRect
  725. {
  726.     struct  ClipRect *Next;         /* roms used to find next ClipRect */
  727.     struct  ClipRect *prev;         /* ignored by roms, used by windowlib */
  728.     struct  Layer   *lobs;          /* ignored by roms, used by windowlib */
  729.     struct  BitMap  *BitMap;
  730.     struct  Rectangle   bounds;     /* set up by windowlib, used by roms */
  731.     struct    ClipRect    *_p1,*_p2;    /* system reserved */
  732.     LONG    reserved;                /* system use */
  733. };
  734. !RegionRectangle
  735. /include/graphics/regions.h
  736. struct RegionRectangle
  737. {
  738.     struct RegionRectangle *Next,*Prev;
  739.     struct Rectangle bounds;
  740. };
  741. !Region
  742. /include/graphics/regions.h
  743. struct Region
  744. {
  745.     struct Rectangle bounds;
  746.     struct RegionRectangle *RegionRectangle;
  747. };
  748. !GfxBase
  749. /include/graphics/gfxbase.h
  750. struct GfxBase
  751. {
  752.     struct Library  LibNode;
  753.     struct View *ActiView;
  754.     struct copinit *copinit;    /* ptr to copper start up list */
  755.     long    *cia;       /* for 8520 resource use */
  756.     long    *blitter;   /* for future blitter resource use */
  757.     UWORD   *LOFlist;
  758.     UWORD   *SHFlist;
  759.     struct bltnode *blthd,*blttl;
  760.     struct bltnode *bsblthd,*bsblttl;
  761.     struct Interrupt vbsrv,timsrv,bltsrv;
  762.     struct List     TextFonts;
  763.     struct  TextFont *DefaultFont;
  764.     UWORD  Modes;              /* copy of current first bplcon0 */
  765.     BYTE VBlank;
  766.     BYTE Debug;
  767.     SHORT BeamSync;
  768.     SHORT system_bplcon0;   /* this is initialized to 0 */
  769.             /* it is ored into each bplcon0 for display */
  770.     UBYTE   SpriteReserved;
  771.     UBYTE   bytereserved;
  772.     /* candidates for removal */
  773.     short   Flags;
  774.     SHORT   BlitLock;
  775.     short    BlitNest;
  776.  
  777.     struct    List    BlitWaitQ;
  778.     struct    Task    *BlitOwner;
  779.     struct  List    TOF_WaitQ;
  780.     ULONG   reserved[2];    /* for future use */
  781. };
  782. !CopIns
  783. /include/graphics/copper.h
  784. struct CopIns
  785. {
  786.     short   OpCode; /* 0 = move, 1 = wait */
  787.     union
  788.     {
  789.     struct CopList *nxtlist;
  790.     struct 
  791.     {
  792.     union
  793.     {
  794.     short   VWaitPos;   /* vertical beam wait */
  795.     short   DestAddr;   /* destination address of copper move */
  796.     } u1;
  797.     union
  798.     {
  799.     short   HWaitPos;   /* horizontal beam wait position */
  800.     short   DestData;   /* destination immediate data to send */
  801.     } u2;
  802.     } u4;
  803.     } u3;
  804. };
  805. !cprlist
  806. /include/graphics/copper.h
  807. struct cprlist
  808. {
  809.     struct cprlist *Next;
  810.     short *start;   /* start of copper list */
  811.     short max;  /* number of long instructions */
  812. };
  813. !CopList
  814. /include/graphics/copper.h
  815. struct CopList
  816. {
  817.     struct  CopList *Next;  /* next block for this copper list */
  818.     struct  CopList *_CopList;  /* system use */
  819.     struct  ViewPort *_ViewPort;    /* system use */
  820.     struct  CopIns *CopIns; /* start of this block */
  821.     struct  CopIns *CopPtr; /* intermediate ptr */
  822.     UWORD   *CopLStart;     /* mrgcop fills this in for Long Frame*/
  823.     UWORD   *CopSStart;     /* mrgcop fills this in for Short Frame*/
  824.     SHORT   Count;          /* intermediate counter */
  825.     SHORT   MaxCount;       /* max # of copins for this block */
  826.     SHORT   DyOffset;       /* offset this copper list vertical waits */
  827. };
  828. !UCopList
  829. /include/graphics/copper.h
  830. struct UCopList
  831. {
  832.     struct UCopList *Next;
  833.     struct CopList *FirstCopList; /* head node of this copper list */
  834.     struct CopList *CopList; /* node in use */
  835. };
  836. !copinit
  837. /include/graphics/copper.h
  838. struct copinit
  839. {
  840.     SHORT diagstrt[4];  /* copper list for first bitplane */
  841.     SHORT sprstrtup[(2*8*2)+2+(2*2)+2];
  842.     SHORT   sprstop[2];
  843. };
  844. !SimpleSprite
  845. /include/graphics/sprite.h
  846. struct SimpleSprite
  847. {
  848.     UWORD *posctldata;
  849.     UWORD height;
  850.     UWORD   x,y;    /* current position */
  851.     UWORD   num;
  852. };
  853. !ColorMap
  854. /include/graphics/view.h
  855. struct ColorMap
  856. {
  857.     UBYTE    Flags;
  858.     UBYTE    Type;
  859.     UWORD    Count;
  860.     APTR    ColorTable;
  861. };
  862. !ViewPort
  863. /include/graphics/view.h
  864. struct ViewPort
  865. {
  866.     struct ViewPort *Next;
  867.     struct ColorMap    *ColorMap;  /* table of colors for this viewport */
  868.                         /* if this is nil, MakeVPort assumes default values */
  869.     struct CopList  *DspIns;    /* user by MakeView() */
  870.     struct CopList  *SprIns;    /* used by sprite stuff */
  871.     struct CopList  *ClrIns;    /* used by sprite stuff */
  872.     struct UCopList *UCopIns;   /* User copper list */
  873.     SHORT   DWidth,DHeight;
  874.     SHORT   DxOffset,DyOffset;
  875.     UWORD   Modes;
  876.     UWORD    reserved;
  877.     struct    RasInfo *RasInfo;
  878. };
  879. !View
  880. /include/graphics/view.h
  881. struct View
  882. {
  883.     struct ViewPort *ViewPort;
  884.     struct cprlist *LOFCprList; /* used for interlaced and noninterlaced */
  885.     struct cprlist *SHFCprList; /* only used during interlace */
  886.     short DyOffset,DxOffset;    /* for complete View positioning */
  887.                 /* offsets are +- adjustments to standard #s */
  888.     UWORD   Modes;              /* such as INTERLACE, GENLOC */
  889. };
  890. !RasInfo
  891. /include/graphics/view.h
  892. struct RasInfo  /* used by callers to and InitDspC() */
  893. {
  894.     struct RasInfo *Next;    /* used for dualpf */
  895.     struct BitMap *BitMap;
  896.     SHORT   RxOffset,RyOffset;  /* scroll offsets in this BitMap */
  897. };
  898. !AreaInfo
  899. /include/graphics/rastport.h
  900. struct AreaInfo
  901. {
  902.     SHORT   *VctrTbl;       /* ptr to start of vector table */
  903.     SHORT   *VctrPtr;       /* ptr to current vertex */
  904.     BYTE    *FlagTbl;       /* ptr to start of vector flag table */
  905.     BYTE    *FlagPtr;       /* ptrs to areafill flags */
  906.     SHORT   Count;  /* number of vertices in list */
  907.     SHORT   MaxCount;       /* AreaMove/Draw will not allow Count>MaxCount */
  908.     SHORT   FirstX,FirstY;  /* first point for this polygon */
  909. };
  910. !TmpRas
  911. /include/graphics/rastport.h
  912. struct TmpRas
  913. {
  914.     BYTE *RasPtr;
  915.     LONG Size;
  916.     /* other misc junk for freelist etc. */
  917. };
  918. !GelsInfo
  919. /include/graphics/rastport.h
  920. struct GelsInfo
  921. {
  922.     BYTE sprRsrvd;  /* flag of which sprites to reserve from vsprite system */
  923.     UBYTE Flags;  /* system use */
  924.     struct VSprite *gelHead, *gelTail; /* dummy vSprites for list management */
  925.     /* pointer to array of 8 WORDS for sprite available lines */
  926.     WORD *nextLine;
  927.     /* pointer to array of 8 pointers for color-last-assigned to vSprites */
  928.     WORD **lastColor;
  929.     struct collTable *collHandler;  /* addresses of collision routines */
  930.     short leftmost, rightmost, topmost, bottommost;
  931.     APTR firstBlissObj,lastBlissObj;    /* system use only */
  932. };
  933. !RastPort
  934. /include/graphics/rastport.h
  935. struct RastPort
  936. {
  937.     struct  Layer *Layer;
  938.     struct BitMap   *BitMap;
  939.     USHORT *AreaPtrn;       /* ptr to areafill pattern */
  940.     struct TmpRas *TmpRas;
  941.     struct  AreaInfo *AreaInfo;
  942.     struct GelsInfo *GelsInfo;
  943.     UBYTE Mask;             /* write mask for this raster */
  944.     BYTE FgPen;             /* foreground pen for this raster */
  945.     BYTE BgPen;             /* background pen  */
  946.     BYTE AOlPen;            /* areafill outline pen */
  947.     BYTE DrawMode;          /* drawing mode for fill, lines, and text */
  948.     BYTE AreaPtSz;          /* 2^n words for areafill pattern */
  949.     BYTE linpatcnt;         /* current line drawing pattern preshift */
  950.     BYTE dummy;
  951.     USHORT Flags;           /* miscellaneous control bits */
  952.     USHORT LinePtrn;            /* 16 bits for textured lines */
  953.     SHORT cp_x, cp_y;       /* current pen position */
  954.     UBYTE   minterms[8];
  955.     SHORT   PenWidth;
  956.     SHORT   PenHeight;
  957.     struct TextFont *Font;          /* current font address */
  958.     UBYTE   AlgoStyle;      /* the algorithmically generated style */
  959.     UBYTE   TxFlags;        /* text specific flags */
  960.     UWORD   TxHeight;       /* text height */
  961.     UWORD   TxWidth;        /* text nominal width */
  962.     UWORD   TxBaseline;     /* text baseline */
  963.     WORD    TxSpacing;      /* text spacing (per character) */
  964.     APTR    *RP_User;
  965.     UWORD    wordreserved[7];    /* used to be a node */
  966.     ULONG    longreserved[2];
  967.     UBYTE   reserved[8];    /* for future use */
  968. };
  969. !Layer
  970. /include/graphics/layers.h
  971. struct Layer_Info
  972. {
  973.     struct Layer *top_layer;
  974.     struct Layer *check_lp; /* system use */
  975.     struct Layer *obs;  /* system use */
  976.     struct MsgPort  RP_ReplyPort;   /* for rastport locking */
  977.     struct MsgPort  LockPort;       /* for screen locking */
  978.     UBYTE   Lock;
  979.     UBYTE   broadcast;      /* bunch of messages sent */
  980.     UBYTE   LockNest;
  981.     UBYTE   pad;
  982.     struct Task *Locker;
  983.     UBYTE    bytereserved[2];
  984.     UWORD    wordreserved[2];    /* used to be a node in here someplace */
  985.     ULONG    longreserved[2];
  986. };
  987. !Rectangle
  988. /include/graphics/gfx.h
  989. struct Rectangle
  990. {
  991.     SHORT   MinX,MinY;
  992.     SHORT   MaxX,MaxY;
  993. };
  994. !BitMap
  995. /include/graphics/gfx.h
  996. struct BitMap
  997. {
  998.     UWORD   BytesPerRow;
  999.     UWORD   Rows;
  1000.     UBYTE   Flags;
  1001.     UBYTE   Depth;
  1002.     UWORD   pad;
  1003.     PLANEPTR Planes[8];
  1004. };
  1005. !Isrvstr
  1006. /include/graphics/graphint.h
  1007. struct Isrvstr
  1008. {
  1009.     struct Node is_Node;
  1010.     struct Isrvstr *Iptr;   /* passed to srvr by os */
  1011.     int (*code)();
  1012.     int (*ccode)();
  1013.     int Carg;
  1014. };
  1015. !VSprite
  1016. /include/graphics/gels.h
  1017. struct VSprite
  1018. {
  1019. /* --------------------- SYSTEM VARIABLES --------------------------------- */
  1020. /* GEL linked list forward/backward pointers sorted by y,x value */
  1021.     struct VSprite *NextVSprite;
  1022.     struct VSprite *PrevVSprite;
  1023.  
  1024. /* GEL draw list constructed in the order the Bobs are actually drawn, then
  1025.  *  list is copied to clear list
  1026.  *  must be here in VSprite for system boundary detection
  1027.  */
  1028.     struct VSprite *DrawPath;   /* pointer of overlay drawing */
  1029.     struct VSprite *ClearPath;  /* pointer for overlay clearing */
  1030.  
  1031. /* the VSprite positions are defined in (y,x) order to make sorting
  1032.  *  sorting easier, since (y,x) as a long integer
  1033.  */
  1034.     WORD OldY, OldX;    /* previous position */
  1035.  
  1036. /* --------------------- COMMON VARIABLES --------------------------------- */
  1037.     WORD Flags;       /* VSprite flags */
  1038.  
  1039.  
  1040. /* --------------------- USER VARIABLES ----------------------------------- */
  1041. /* the VSprite positions are defined in (y,x) order to make sorting
  1042.  *  sorting easier, since (y,x) as a long integer
  1043.  */
  1044.     WORD Y, X;          /* screen position */
  1045.  
  1046.     WORD Height;
  1047.     WORD Width; /* number of words per row of image data */
  1048.     WORD Depth; /* number of planes of data */
  1049.  
  1050.     WORD MeMask;    /* which types can collide with this VSprite */
  1051.     WORD HitMask;   /* which types this VSprite can collide with */
  1052.  
  1053.     WORD *ImageData;    /* pointer to VSprite image */
  1054.  
  1055. /* borderLine is the one-dimensional logical OR of all
  1056.  *  the VSprite bits, used for fast collision detection of edge
  1057.  */
  1058.     WORD *BorderLine;   /* logical OR of all VSprite bits */
  1059.     WORD *CollMask; /* similar to above except this is a matrix */
  1060.  
  1061. /* pointer to this VSprite's color definitions (not used by Bobs) */
  1062.     WORD *SprColors;
  1063.  
  1064.     struct Bob *VSBob;      /* points home if this VSprite is part of a Bob */
  1065.  
  1066. /* planePick flag:  set bit selects a plane from image, clear bit selects
  1067.  *  use of shadow mask for that plane
  1068.  * OnOff flag: if using shadow mask to fill plane, this bit (corresponding
  1069.  *  to bit in planePick) describes whether to fill with 0's or 1's
  1070.  * There are two uses for these flags:
  1071.  *      - if this is the VSprite of a Bob, these flags describe how the Bob
  1072.  *        is to be drawn into memory
  1073.  *      - if this is a simple VSprite and the user intends on setting the
  1074.  *        MUSTDRAW flag of the VSprite, these flags must be set too to describe
  1075.  *        which color registers the user wants for the image
  1076.  */
  1077.     BYTE PlanePick;
  1078.     BYTE PlaneOnOff;
  1079.  
  1080.     VUserStuff VUserExt; /* user definable:  see note above */
  1081. };
  1082. !Bob
  1083. /include/graphics/gels.h
  1084. struct Bob /* blitter-objects */
  1085. {
  1086. /* --------------------- SYSTEM VARIABLES --------------------------------- */
  1087.  
  1088. /* --------------------- COMMON VARIABLES --------------------------------- */
  1089.     WORD Flags;          /* general purpose flags (see definitions below) */
  1090.  
  1091. /* --------------------- USER VARIABLES ----------------------------------- */
  1092.     WORD *SaveBuffer;   /* pointer to the buffer for background save */
  1093.  
  1094. /* used by Bobs for "cookie-cutting" and multi-plane masking */
  1095.     WORD *ImageShadow;
  1096.  
  1097. /* pointer to BOBs for sequenced drawing of Bobs
  1098.  *  for correct overlaying of multiple component animations
  1099.  */
  1100.     struct Bob *Before; /* draw this Bob before Bob pointed to by before */
  1101.     struct Bob *After;  /* draw this Bob after Bob pointed to by after */
  1102.  
  1103.     struct VSprite *BobVSprite; /* this Bob's VSprite definition */
  1104.  
  1105.     struct AnimComp *BobComp;   /* pointer to this Bob's AnimComp def */
  1106.  
  1107.     struct DBufPacket *DBuffer; /* pointer to this Bob's dBuf packet */
  1108.  
  1109.     BUserStuff BUserExt;    /* Bob user extension */
  1110. };
  1111. !AnimComp
  1112. /include/graphics/gels.h
  1113. struct AnimComp
  1114. {
  1115. /* --------------------- SYSTEM VARIABLES --------------------------------- */
  1116.  
  1117. /* --------------------- COMMON VARIABLES --------------------------------- */
  1118.     WORD Flags;     /* AnimComp flags for system & user */
  1119.  
  1120. /* timer defines how long to keep this component active:
  1121.  *  if set non-zero, timer decrements to zero then switches to nextSeq
  1122.  *  if set to zero, AnimComp never switches
  1123.  */
  1124.     WORD Timer;
  1125.  
  1126. /* --------------------- USER VARIABLES ----------------------------------- */
  1127. /* initial value for timer when the AnimComp is activated by the system */
  1128.     WORD TimeSet;
  1129.  
  1130. /* pointer to next and previous components of animation object */
  1131.     struct AnimComp *NextComp;
  1132.     struct AnimComp *PrevComp;
  1133.  
  1134. /* pointer to component component definition of next image in sequence */
  1135.     struct AnimComp *NextSeq;
  1136.     struct AnimComp *PrevSeq;
  1137.  
  1138.     WORD (*AnimCRoutine)(); /* address of special animation procedure */
  1139.  
  1140.     WORD YTrans;    /* initial y translation (if this is a component) */
  1141.     WORD XTrans;    /* initial x translation (if this is a component) */
  1142.  
  1143.     struct AnimOb *HeadOb;
  1144.  
  1145.     struct Bob *AnimBob;
  1146. };
  1147. !AnimOb
  1148. /include/graphics/gels.h
  1149. struct AnimOb
  1150. {
  1151. /* --------------------- SYSTEM VARIABLES --------------------------------- */
  1152.     struct AnimOb *NextOb, *PrevOb;
  1153.  
  1154. /* number of calls to Animate this AnimOb has endured */
  1155.     LONG Clock;
  1156.  
  1157.     WORD AnOldY, AnOldX;    /* old y,x coordinates */
  1158.  
  1159. /* --------------------- COMMON VARIABLES --------------------------------- */
  1160.     WORD AnY, AnX;          /* y,x coordinates of the AnimOb */
  1161.  
  1162. /* --------------------- USER VARIABLES ----------------------------------- */
  1163.     WORD YVel, XVel;        /* velocities of this object */
  1164.     WORD YAccel, XAccel;    /* accelerations of this object */
  1165.  
  1166.     WORD RingYTrans, RingXTrans; /* ring translation values */
  1167.  
  1168.     WORD (*AnimORoutine)(); /* address of special animation procedure */
  1169.  
  1170.     struct AnimComp *HeadComp;  /* pointer to first component */
  1171.  
  1172.     AUserStuff AUserExt;    /* AnimOb user extension */
  1173. };
  1174. !DBufPacket
  1175. /include/graphics/gels.h
  1176. struct DBufPacket
  1177. {
  1178.     WORD BufY, BufX;            /* save the other buffers screen coordinates */
  1179.     struct VSprite *BufPath;    /* carry the draw path over the gap */
  1180.  
  1181. /* these pointers must be filled in by the user */
  1182. /* pointer to other buffer's background save buffer */
  1183.     WORD *BufBuffer;
  1184. };
  1185. !collTable
  1186. /include/graphics/gels.h
  1187. struct collTable
  1188. {
  1189.     int (*collPtrs[16])();
  1190. };
  1191. !Menu
  1192. /include/intuition/intuition.h
  1193. struct Menu
  1194. {
  1195.     struct Menu *NextMenu;    /* same level */
  1196.     SHORT LeftEdge, TopEdge;    /* position of the select box */
  1197.     SHORT Width, Height;     /* dimensions of the select box */
  1198.     USHORT Flags;          /* see flag definitions below */
  1199.     BYTE *MenuName;        /* text for this Menu Header */
  1200.     struct MenuItem *FirstItem; /* pointer to first in chain */
  1201.  
  1202.     /* these mysteriously-named variables are for internal use only */
  1203.     SHORT JazzX, JazzY, BeatX, BeatY;
  1204. };
  1205. !MenuItem
  1206. /include/intuition/intuition.h
  1207. struct MenuItem 
  1208.     struct MenuItem *NextItem;    /* pointer to next in chained list */ 
  1209.     SHORT LeftEdge, TopEdge;    /* position of the select box */ 
  1210.     SHORT Width, Height;    /* dimensions of the select box */ 
  1211.     USHORT Flags;        /* see the defines below */ 
  1212.  
  1213.     LONG MutualExclude;        /* set bits mean this item excludes that */ 
  1214.  
  1215.     APTR ItemFill;        /* points to Image, IntuiText, or NULL */ 
  1216.  
  1217.     /* when this item is pointed to by the cursor and the items highlight 
  1218.      *    mode HIGHIMAGE is selected, this alternate image will be displayed 
  1219.      */ 
  1220.     APTR SelectFill;        /* points to Image, IntuiText, or NULL */
  1221.  
  1222.     BYTE Command;        /* only if appliprog sets the COMMSEQ flag */
  1223.  
  1224.     struct MenuItem *SubItem;    /* if non-zero, DrawMenu shows "->" */
  1225.  
  1226.     /* The NextSelect field represents the menu number of next selected 
  1227.      *  item (when user has drag-selected several items)
  1228.      */
  1229.     USHORT NextSelect;
  1230. };
  1231. !Requester
  1232. /include/intuition/intuition.h
  1233. struct Requester
  1234. {
  1235.     /* the ClipRect and BitMap and used for rendering the requester */
  1236.     struct Requester *OlderRequest;
  1237.     SHORT LeftEdge, TopEdge;        /* dimensions of the entire box */
  1238.     SHORT Width, Height;        /* dimensions of the entire box */
  1239.     SHORT RelLeft, RelTop;        /* for Pointer relativity offsets */
  1240.  
  1241.     struct Gadget *ReqGadget;        /* pointer to a list of Gadgets */
  1242.     struct Border *ReqBorder;        /* the box's border */
  1243.     struct IntuiText *ReqText;        /* the box's text */
  1244.     USHORT Flags;            /* see definitions below */
  1245.  
  1246.     /* pen number for back-plane fill before draws */
  1247.     UBYTE BackFill;
  1248.     struct ClipRect ReqCRect;
  1249.  
  1250.     /* If the BitMap plane pointers are non-zero, this tells the system 
  1251.      * that the image comes pre-drawn (if the appliprog wants to define 
  1252.      * it's own box, in any shape or size it wants!);  this is OK by 
  1253.      * Intuition as long as there's a good correspondence between 
  1254.      * the image and the specified Gadgets
  1255.      */
  1256.     struct BitMap *ImageBMap;    /* points to the BitMap of PREDRAWN imagery */
  1257.     struct BitMap ReqBMap;
  1258. };
  1259. !Gadget
  1260. /include/intuition/intuition.h
  1261. struct Gadget
  1262. {
  1263.     struct Gadget *NextGadget;  /* next gadget in the list */
  1264.  
  1265.     SHORT LeftEdge, TopEdge;    /* "hit box" of gadget */
  1266.     SHORT Width, Height;    /* "hit box" of gadget */
  1267.  
  1268.     USHORT Flags;         /* see below for list of defines */
  1269.  
  1270.     USHORT Activation;        /* see below for list of defines */
  1271.  
  1272.     USHORT GadgetType;        /* see below for defines */
  1273.  
  1274.     /* appliprog can specify that the Gadget be rendered as either as Border
  1275.      * or an Image.  This variable points to which (or equals NULL if there's
  1276.      * nothing to be rendered about this Gadget)
  1277.      */
  1278.     APTR GadgetRender;
  1279.  
  1280.     /* appliprog can specify "highlighted" imagery rather than algorithmic
  1281.      * this can point to either Border or Image data
  1282.      */
  1283.     APTR SelectRender;
  1284.  
  1285.     struct IntuiText *GadgetText;   /* text for this gadget */
  1286.  
  1287.     /* by using the MutualExclude word, the appliprog can describe 
  1288.      * which gadgets mutually-exclude which other ones.  The bits 
  1289.      * in MutualExclude correspond to the gadgets in object containing 
  1290.      * the gadget list.  If this gadget is selected and a bit is set 
  1291.      * in this gadget's MutualExclude and the gadget corresponding to 
  1292.      * that bit is currently selected (e.g. bit 2 set and gadget 2 
  1293.      * is currently selected) that gadget must be unselected.  
  1294.      * Intuition does the visual unselecting (with checkmarks) and 
  1295.      * leaves it up to the program to unselect internally
  1296.      */
  1297.     LONG MutualExclude;  /* set bits mean this gadget excludes that gadget */
  1298.  
  1299.     /* pointer to a structure of special data required by Proportional, 
  1300.      * String and Integer Gadgets 
  1301.      */
  1302.     APTR SpecialInfo;
  1303.  
  1304.     USHORT GadgetID;    /* user-definable ID field */
  1305.     APTR UserData;    /* ptr to general purpose User data (ignored by In) */
  1306. };
  1307. !PropInfo
  1308. /include/intuition/intuition.h
  1309. struct PropInfo
  1310. {
  1311.     USHORT Flags;    /* general purpose flag bits (see defines below) */
  1312.  
  1313.     /* You initialize the Pot variables before the Gadget is added to 
  1314.      * the system.  Then you can look here for the current settings 
  1315.      * any time, even while User is playing with this Gadget.  To 
  1316.      * adjust these after the Gadget is added to the System, use 
  1317.      * ModifyProp();  The Pots are the actual proportional settings, 
  1318.      * where a value of zero means zero and a value of MAXPOT means 
  1319.      * that the Gadget is set to its maximum setting.  
  1320.      */
  1321.     USHORT HorizPot;    /* 16-bit FixedPoint horizontal quantity percentage */
  1322.     USHORT VertPot;    /* 16-bit FixedPoint vertical quantity percentage */
  1323.  
  1324.     /* the 16-bit FixedPoint Body variables describe what percentage of 
  1325.      * the entire body of stuff referred to by this Gadget is actually 
  1326.      * shown at one time.  This is used with the AUTOKNOB routines, 
  1327.      * to adjust the size of the AUTOKNOB according to how much of 
  1328.      * the data can be seen.  This is also used to decide how far 
  1329.      * to advance the Pots when User hits the Container of the Gadget.  
  1330.      * For instance, if you were controlling the display of a 5-line 
  1331.      * Window of text with this Gadget, and there was a total of 15 
  1332.      * lines that could be displayed, you would set the VertBody value to 
  1333.      *     (MAXBODY / (TotalLines / DisplayLines)) = MAXBODY / 3.
  1334.      * Therefore, the AUTOKNOB would fill 1/3 of the container, and 
  1335.      * if User hits the Cotainer outside of the knob, the pot would 
  1336.      * advance 1/3 (plus or minus) If there's no body to show, or 
  1337.      * the total amount of displayable info is less than the display area, 
  1338.      * set the Body variables to the MAX.  To adjust these after the 
  1339.      * Gadget is added to the System, use ModifyProp();  
  1340.      */
  1341.     USHORT HorizBody;        /* horizontal Body */ 
  1342.     USHORT VertBody;        /* vertical Body */
  1343.  
  1344.     /* these are the variables that Intuition sets and maintains */
  1345.     USHORT CWidth;    /* Container width (with any relativity absoluted) */
  1346.     USHORT CHeight;    /* Container height (with any relativity absoluted) */
  1347.     USHORT HPotRes, VPotRes; /* pot increments */
  1348.     USHORT LeftBorder;        /* Container borders */
  1349.     USHORT TopBorder;        /* Container borders */
  1350. };
  1351. !StringInfo
  1352. /include/intuition/intuition.h
  1353. struct StringInfo
  1354. {
  1355.     /* you initialize these variables, and then Intuition maintains them */
  1356.     UBYTE *Buffer;    /* the buffer containing the start and final string */
  1357.     UBYTE *UndoBuffer;    /* optional buffer for undoing current entry */
  1358.     SHORT BufferPos;    /* character position in Buffer */
  1359.     SHORT MaxChars;    /* max number of chars in Buffer (including NULL) */
  1360.     SHORT DispPos;    /* Buffer position of first displayed character */
  1361.  
  1362.     /* Intuition initializes and maintains these variables for you */
  1363.     SHORT UndoPos;    /* character position in the undo buffer */
  1364.     SHORT NumChars;    /* number of characters currently in Buffer */
  1365.     SHORT DispCount;    /* number of whole characters visible in Container */
  1366.     SHORT CLeft, CTop;    /* topleft offset of the container */
  1367.     struct Layer *LayerPtr;    /* the RastPort containing this Gadget */
  1368.     LONG LongInt;
  1369.  
  1370.     /* If you want this Gadget to use your own Console keymapping, you
  1371.      * set the ALTKEYMAP bit in the Activation flags of the Gadget, and then
  1372.      * set this variable to point to your keymap.  If you don't set the
  1373.      * ALTKEYMAP, you'll get the standard ASCII keymapping.
  1374.      */
  1375.     struct KeyMap *AltKeyMap;
  1376. };
  1377. !IntuiText
  1378. /include/intuition/intuition.h
  1379. struct IntuiText
  1380. {
  1381.     UBYTE FrontPen, BackPen;    /* the pen numbers for the rendering */
  1382.     UBYTE DrawMode;        /* the mode for rendering the text */
  1383.     SHORT LeftEdge;        /* relative start location for the text */
  1384.     SHORT TopEdge;        /* relative start location for the text */
  1385.     struct TextAttr *ITextFont;    /* if NULL, you accept the default */
  1386.     UBYTE *IText;        /* pointer to null-terminated text */
  1387.     struct IntuiText *NextText; /* continuation to TxWrite another text */
  1388. };
  1389. !Border
  1390. /include/intuition/intuition.h
  1391. struct Border
  1392. {
  1393.     SHORT LeftEdge, TopEdge;    /* initial offsets from the origin */
  1394.     UBYTE FrontPen, BackPen;    /* pens numbers for rendering */
  1395.     UBYTE DrawMode;        /* mode for rendering */
  1396.     BYTE Count;            /* number of XY pairs */
  1397.     SHORT *XY;            /* vector coordinate pairs rel to LeftTop*/
  1398.     struct Border *NextBorder;    /* pointer to any other Border too */
  1399. };
  1400. !Image
  1401. /include/intuition/intuition.h
  1402. struct Image
  1403. {
  1404.     SHORT LeftEdge;        /* starting offset relative to some origin */
  1405.     SHORT TopEdge;        /* starting offsets relative to some origin */
  1406.     SHORT Width;        /* pixel size (though data is word-aligned) */
  1407.     SHORT Height, Depth;    /* pixel sizes */
  1408.     USHORT *ImageData;        /* pointer to the actual word-aligned bits */
  1409.  
  1410.     /* the PlanePick and PlaneOnOff variables work much the same way as the
  1411.      * equivalent GELS Bob variables.  It's a space-saving 
  1412.      * mechanism for image data.  Rather than defining the image data
  1413.      * for every plane of the RastPort, you need define data only 
  1414.      * for the planes that are not entirely zero or one.  As you 
  1415.      * define your Imagery, you will often find that most of the planes 
  1416.      * ARE just as color selectors.  For instance, if you're designing 
  1417.      * a two-color Gadget to use colors two and three, and the Gadget 
  1418.      * will reside in a five-plane display, bit plane zero of your 
  1419.      * imagery would be all ones, bit plane one would have data that 
  1420.      * describes the imagery, and bit planes two through four would be 
  1421.      * all zeroes.  Using these flags allows you to avoid wasting all 
  1422.      * that memory in this way:  first, you specify which planes you 
  1423.      * want your data to appear in using the PlanePick variable.  For 
  1424.      * each bit set in the variable, the next "plane" of your image 
  1425.      * data is blitted to the display.  For each bit clear in this 
  1426.      * variable, the corresponding bit in PlaneOnOff is examined.  
  1427.      * If that bit is clear, a "plane" of zeroes will be used.  
  1428.      * If the bit is set, ones will go out instead.  So, for our example:
  1429.      *   Gadget.PlanePick = 0x02;
  1430.      *   Gadget.PlaneOnOff = 0x01;
  1431.      * Note that this also allows for generic Gadgets, like the 
  1432.      * System Gadgets, which will work in any number of bit planes.  
  1433.      * Note also that if you want an Image that is only a filled 
  1434.      * rectangle, you can get this by setting PlanePick to zero 
  1435.      * (pick no planes of data) and set PlaneOnOff to describe the pen 
  1436.      * color of the rectangle.  
  1437.      */
  1438.     UBYTE PlanePick, PlaneOnOff;
  1439.  
  1440.     /* if the NextImage variable is not NULL, Intuition presumes that 
  1441.      * it points to another Image structure with another Image to be 
  1442.      * rendered
  1443.      */
  1444.     struct Image *NextImage;
  1445. };
  1446. !IntuiMessage
  1447. /include/intuition/intuition.h
  1448. struct IntuiMessage
  1449. {
  1450.     struct Message ExecMessage;
  1451.  
  1452.     /* the Class bits correspond directly with the IDCMP Flags, except for the
  1453.      * special bit LONELYMESSAGE (defined below)
  1454.      */
  1455.     ULONG Class;
  1456.  
  1457.     /* the Code field is for special values like MENU number */
  1458.     USHORT Code;
  1459.  
  1460.     /* the Qualifier field is a copy of the current InputEvent's Qualifier */
  1461.     USHORT Qualifier;
  1462.  
  1463.     /* IAddress contains particular addresses for Intuition functions, like
  1464.      * the pointer to the Gadget or the Screen
  1465.      */
  1466.     APTR IAddress;
  1467.  
  1468.     /* when getting mouse movement reports, any event you get will have the
  1469.      * the mouse coordinates in these variables.  the coordinates are relative
  1470.      * to the upper-left corner of your Window (GIMMEZEROZERO notwithstanding)
  1471.      */
  1472.     SHORT MouseX, MouseY; 
  1473.  
  1474.     /* the time values are copies of the current system clock time.  Micros
  1475.      * are in units of microseconds, Seconds in seconds.
  1476.      */
  1477.     ULONG Seconds, Micros;
  1478.  
  1479.     /* the IDCMPWindow variable will always have the address of the Window of 
  1480.      * this IDCMP 
  1481.      */
  1482.     struct Window *IDCMPWindow;
  1483.  
  1484.     /* system-use variable */
  1485.     struct IntuiMessage *SpecialLink;
  1486. };
  1487. !Window
  1488. /include/intuition/intuition.h
  1489. struct Window
  1490. {
  1491.     struct Window *NextWindow;        /* for the linked list in a screen */
  1492.  
  1493.     SHORT LeftEdge, TopEdge;        /* screen dimensions of window */
  1494.     SHORT Width, Height;        /* screen dimensions of window */
  1495.  
  1496.     SHORT MouseY, MouseX;        /* relative to upper-left of window */
  1497.  
  1498.     SHORT MinWidth, MinHeight;        /* minimum sizes */
  1499.     SHORT MaxWidth, MaxHeight;        /* maximum sizes */
  1500.  
  1501.     ULONG Flags;              /* see below for defines */
  1502.  
  1503.     struct Menu *MenuStrip;        /* the strip of Menu headers */
  1504.  
  1505.     UBYTE *Title;            /* the title text for this window */
  1506.  
  1507.     struct Requester *FirstRequest;    /* all active Requesters */
  1508.  
  1509.     struct Requester *DMRequest;    /* double-click Requester */
  1510.  
  1511.     SHORT ReqCount;            /* count of reqs blocking Window */
  1512.  
  1513.     struct Screen *WScreen;        /* this Window's Screen */
  1514.     struct RastPort *RPort;        /* this Window's very own RastPort */
  1515.  
  1516.     /* the border variables describe the window border.  If you specify
  1517.      * GIMMEZEROZERO when you open the window, then the upper-left of the
  1518.      * ClipRect for this window will be upper-left of the BitMap (with correct
  1519.      * offsets when in SuperBitMap mode; you MUST select GIMMEZEROZERO when
  1520.      * using SuperBitMap).  If you don't specify ZeroZero, then you save
  1521.      * memory (no allocation of RastPort, Layer, ClipRect and associated
  1522.      * Bitmaps), but you also must offset all your writes by BorderTop,
  1523.      * BorderLeft and do your own mini-clipping to prevent writing over the
  1524.      * system gadgets
  1525.      */
  1526.     BYTE BorderLeft, BorderTop, BorderRight, BorderBottom;
  1527.     struct RastPort *BorderRPort;
  1528.  
  1529.  
  1530.     /* You supply a linked-list of Gadgets for your Window.
  1531.      * This list DOES NOT include system gadgets.  You get the standard
  1532.      * window system gadgets by setting flag-bits in the variable Flags (see
  1533.      * the bit definitions below)
  1534.      */
  1535.     struct Gadget *FirstGadget;
  1536.  
  1537.     /* these are for opening/closing the windows */
  1538.     struct Window *Parent, *Descendant;
  1539.  
  1540.     /* sprite data information for your own Pointer
  1541.      * set these AFTER you Open the Window by calling SetPointer()
  1542.      */
  1543.     USHORT *Pointer;    /* sprite data */
  1544.     BYTE PtrHeight;    /* sprite height (not including sprite padding) */
  1545.     BYTE PtrWidth;    /* sprite width (must be less than or equal to 16) */
  1546.     BYTE XOffset, YOffset;    /* sprite offsets */
  1547.  
  1548.     /* the IDCMP Flags and User's and Intuition's Message Ports */
  1549.     ULONG IDCMPFlags;    /* User-selected flags */
  1550.     struct MsgPort *UserPort, *WindowPort;
  1551.     struct IntuiMessage *MessageKey;
  1552.  
  1553.     UBYTE DetailPen, BlockPen;    /* for bar/border/gadget rendering */
  1554.  
  1555.     /* the CheckMark is a pointer to the imagery that will be used when 
  1556.      * rendering MenuItems of this Window that want to be checkmarked
  1557.      * if this is equal to NULL, you'll get the default imagery
  1558.      */
  1559.     struct Image *CheckMark;
  1560.  
  1561.     UBYTE *ScreenTitle;    /* if non-null, Screen title when Window is active */
  1562.  
  1563.     /* These variables have the mouse coordinates relative to the 
  1564.      * inner-Window of GIMMEZEROZERO Windows.  This is compared with the
  1565.      * MouseX and MouseY variables, which contain the mouse coordinates
  1566.      * relative to the upper-left corner of the Window, GIMMEZEROZERO
  1567.      * notwithstanding
  1568.      */
  1569.     SHORT GZZMouseX;
  1570.     SHORT GZZMouseY;
  1571.     /* these variables contain the width and height of the inner-Window of
  1572.      * GIMMEZEROZERO Windows
  1573.      */
  1574.     SHORT GZZWidth;
  1575.     SHORT GZZHeight;
  1576.  
  1577.     UBYTE *ExtData;
  1578.  
  1579.     BYTE *UserData;    /* general-purpose pointer to User data extension */
  1580.    
  1581. };
  1582. !NewWindow
  1583. /include/intuition/intuition.h
  1584. struct NewWindow
  1585. {
  1586.     SHORT LeftEdge, TopEdge;        /* screen dimensions of window */
  1587.     SHORT Width, Height;        /* screen dimensions of window */
  1588.  
  1589.     UBYTE DetailPen, BlockPen;        /* for bar/border/gadget rendering */
  1590.  
  1591.     ULONG IDCMPFlags;            /* User-selected IDCMP flags */
  1592.  
  1593.     ULONG Flags;              /* see Window struct for defines */
  1594.  
  1595.     /* You supply a linked-list of Gadgets for your Window.
  1596.      *  This list DOES NOT include system Gadgets.  You get the standard
  1597.      *  system Window Gadgets by setting flag-bits in the variable Flags (see
  1598.      *  the bit definitions under the Window structure definition)
  1599.      */
  1600.     struct Gadget *FirstGadget;
  1601.  
  1602.     /* the CheckMark is a pointer to the imagery that will be used when 
  1603.      * rendering MenuItems of this Window that want to be checkmarked
  1604.      * if this is equal to NULL, you'll get the default imagery
  1605.      */
  1606.     struct Image *CheckMark;
  1607.  
  1608.     UBYTE *Title;              /* the title text for this window */
  1609.     
  1610.     /* the Screen pointer is used only if you've defined a CUSTOMSCREEN and
  1611.      * want this Window to open in it.  If so, you pass the address of the
  1612.      * Custom Screen structure in this variable.  Otherwise, this variable
  1613.      * is ignored and doesn't have to be initialized.
  1614.      */
  1615.     struct Screen *Screen;
  1616.     
  1617.     /* SUPER_BITMAP Window?  If so, put the address of your BitMap structure
  1618.      * in this variable.  If not, this variable is ignored and doesn't have 
  1619.      * to be initialized
  1620.      */
  1621.     struct BitMap *BitMap;
  1622.  
  1623.     /* the values describe the minimum and maximum sizes of your Windows.
  1624.      * these matter only if you've chosen the WINDOWSIZING Gadget option,
  1625.      * which means that you want to let the User to change the size of 
  1626.      * this Window.  You describe the minimum and maximum sizes that the
  1627.      * Window can grow by setting these variables.  You can initialize
  1628.      * any one these to zero, which will mean that you want to duplicate
  1629.      * the setting for that dimension (if MinWidth == 0, MinWidth will be
  1630.      * set to the opening Width of the Window).
  1631.      * You can change these settings later using SetWindowLimits().
  1632.      * If you haven't asked for a SIZING Gadget, you don't have to
  1633.      * initialize any of these variables.
  1634.      */
  1635.     SHORT MinWidth, MinHeight;       /* minimums */
  1636.     SHORT MaxWidth, MaxHeight;       /* maximums */
  1637.  
  1638.     /* the type variable describes the Screen in which you want this Window to
  1639.      * open.  The type value can either be CUSTOMSCREEN or one of the
  1640.      * system standard Screen Types such as WBENCHSCREEN.  See the
  1641.      * type definitions under the Screen structure
  1642.      */
  1643.     USHORT Type;
  1644. };
  1645. !Screen
  1646. /include/intuition/intuition.h
  1647. struct Screen
  1648. {
  1649.     struct Screen *NextScreen;        /* linked list of screens */
  1650.     struct Window *FirstWindow;        /* linked list Screen's Windows */
  1651.  
  1652.     SHORT LeftEdge, TopEdge;        /* parameters of the screen */
  1653.     SHORT Width, Height;        /* parameters of the screen */
  1654.  
  1655.     SHORT MouseY, MouseX;        /* position relative to upper-left */
  1656.  
  1657.     USHORT Flags;            /* see definitions below */
  1658.  
  1659.     UBYTE *Title;            /* null-terminated Title text */
  1660.     UBYTE *DefaultTitle;        /* for Windows without ScreenTitle */
  1661.  
  1662.     /* Bar sizes for this Screen and all Window's in this Screen */
  1663.     BYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
  1664.     BYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
  1665.  
  1666.     struct TextAttr *Font;        /* this screen's default font */
  1667.  
  1668.     /* the display data structures for this Screen */
  1669.     struct ViewPort ViewPort;        /* describing the Screen's display */
  1670.     struct RastPort RastPort;        /* describing Screen rendering */
  1671.     struct BitMap BitMap;        /* auxiliary graphexcess baggage */
  1672.     struct Layer_Info LayerInfo;    /* each screen gets a LayerInfo */
  1673.  
  1674.     /* You supply a linked-list of Gadgets for your Screen.
  1675.      *  This list DOES NOT include system Gadgets.  You get the standard
  1676.      *  system Screen Gadgets by default
  1677.      */
  1678.     struct Gadget *FirstGadget;
  1679.  
  1680.     UBYTE DetailPen, BlockPen;        /* for bar/border/gadget rendering */
  1681.  
  1682.     /* the following variable(s) are maintained by Intuition to support the
  1683.      * DisplayBeep() color flashing technique
  1684.      */
  1685.     USHORT SaveColor0;
  1686.  
  1687.     /* This layer is for the Screen and Menu bars */
  1688.     struct Layer *BarLayer;
  1689.  
  1690.     UBYTE *ExtData;
  1691.  
  1692.     UBYTE *UserData;    /* general-purpose pointer to User data extension */
  1693. };
  1694. !NewScreen
  1695. /include/intuition/intuition.h
  1696. struct NewScreen
  1697. {
  1698.     SHORT LeftEdge, TopEdge, Width, Height, Depth;  /* screen dimensions */
  1699.  
  1700.     UBYTE DetailPen, BlockPen;         /* for bar/border/gadget rendering */
  1701.  
  1702.     USHORT ViewModes;        /* the Modes for the ViewPort (and View) */
  1703.  
  1704.     USHORT Type;        /* the Screen type (see defines below) */
  1705.     
  1706.     struct TextAttr *Font;    /* this Screen's default text attributes */
  1707.     
  1708.     UBYTE *DefaultTitle;    /* the default title for this Screen */
  1709.     
  1710.     struct Gadget *Gadgets;    /* your own Gadgets for this Screen */
  1711.     
  1712.     /* if you are opening a CUSTOMSCREEN and already have a BitMap 
  1713.      * that you want used for your Screen, you set the flags CUSTOMBITMAP in
  1714.      * the Types variable and you set this variable to point to your BitMap
  1715.      * structure.  The structure will be copied into your Screen structure,
  1716.      * after which you may discard your own BitMap if you want
  1717.      */
  1718.     struct BitMap *CustomBitMap;
  1719. };
  1720. !Preferences
  1721. /include/intuition/intuition.h
  1722. struct Preferences
  1723. {
  1724.     /* the default font height */
  1725.     BYTE FontHeight;            /* height for system default font  */
  1726.  
  1727.     /* constant describing what's hooked up to the port */
  1728.     UBYTE PrinterPort;            /* printer port connection       */
  1729.  
  1730.     /* the baud rate of the port */
  1731.     USHORT BaudRate;            /* baud rate for the serial port   */
  1732.     
  1733.     /* various timing rates */
  1734.     struct timeval KeyRptSpeed;        /* repeat speed for keyboard       */
  1735.     struct timeval KeyRptDelay;        /* Delay before keys repeat        */
  1736.     struct timeval DoubleClick;        /* Interval allowed between clicks */
  1737.  
  1738.     /* Intuition Pointer data */
  1739.     USHORT PointerMatrix[POINTERSIZE];    /* Definition of pointer sprite    */
  1740.     BYTE XOffset;            /* X-Offset for active 'bit'       */
  1741.     BYTE YOffset;            /* Y-Offset for active 'bit'       */
  1742.     USHORT color17;            /***********************************/
  1743.     USHORT color18;            /* Colours for sprite pointer      */
  1744.     USHORT color19;            /***********************************/
  1745.     USHORT PointerTicks;        /* Sensitivity of the pointer       */
  1746.  
  1747.     /* Workbench Screen colors */
  1748.     USHORT color0;            /***********************************/
  1749.     USHORT color1;            /*  Standard default colours       */
  1750.     USHORT color2;            /*   Used in the Workbench         */
  1751.     USHORT color3;            /***********************************/
  1752.  
  1753.     /* positioning data for the Intuition View */
  1754.     BYTE ViewXOffset;            /* Offset for top lefthand corner  */
  1755.     BYTE ViewYOffset;            /* X and Y dimensions           */
  1756.     WORD ViewInitX, ViewInitY;        /* View initial offset values      */
  1757.  
  1758.     BOOL EnableCLI;            /* CLI availability switch */
  1759.  
  1760.     /* printer configurations */
  1761.     USHORT PrinterType;            /* printer type                    */
  1762.     UBYTE PrinterFilename[FILENAME_SIZE];/* file for printer       */
  1763.  
  1764.     /* print format and quality configurations */
  1765.     USHORT PrintPitch;            /* print pitch               */
  1766.     USHORT PrintQuality;        /* print quality           */
  1767.     USHORT PrintSpacing;        /* number of lines per inch       */
  1768.     UWORD PrintLeftMargin;        /* left margin in characters       */
  1769.     UWORD PrintRightMargin;        /* right margin in characters       */
  1770.     USHORT PrintImage;            /* positive or negative           */
  1771.     USHORT PrintAspect;            /* horizontal or vertical       */
  1772.     USHORT PrintShade;            /* b&w, half-tone, or color       */
  1773.     WORD PrintThreshold;        /* darkness ctrl for b/w dumps       */
  1774.  
  1775.     /* print paper descriptors */
  1776.     USHORT PaperSize;            /* paper size               */
  1777.     UWORD PaperLength;            /* paper length in number of lines */
  1778.     USHORT PaperType;            /* continuous or single sheet      */
  1779.  
  1780.     BYTE padding[50];            /* For further system expansion       */
  1781. };
  1782. !Remember
  1783. /include/intuition/intuition.h
  1784. struct Remember
  1785. {
  1786.     struct Remember *NextRemember;
  1787.     ULONG RememberSize;
  1788.     UBYTE *Memory;
  1789. };
  1790. !IntuitionBase
  1791. /include/intuition/intuitionbase.h
  1792. struct IntuitionBase
  1793. {
  1794.     struct Library LibNode;
  1795. };
  1796. !MiscResource
  1797. /include/resources/misc.h
  1798. struct MiscResource {
  1799.     struct Library mr_Library;
  1800.     ULONG mr_AllocArray[NUMMRTYPES];
  1801. };
  1802. !DiscResourceUnit
  1803. /include/resources/disk.h
  1804. struct DiscResourceUnit {
  1805.     struct Message dru_Message;
  1806.     struct Interrupt dru_DiscBlock;
  1807.     struct Interrupt dru_DiscSync;
  1808.     struct Interrupt dru_Index;
  1809. };
  1810. !DiscResource
  1811. /include/resources/disk.h
  1812. struct DiscResource {
  1813.     struct Library        dr_Library;
  1814.     struct DiscResourceUnit    *dr_Current;
  1815.     UBYTE              dr_Flags;
  1816.     UBYTE            dr_pad;
  1817.     struct Library        *dr_SysLib;
  1818.     struct Library        *dr_CiaResource;
  1819.     ULONG            dr_UnitID[4];
  1820.     struct List         dr_Waiting;
  1821.     struct Interrupt        dr_DiscBlock;
  1822.     struct Interrupt        dr_DiscSync;
  1823.     struct Interrupt        dr_Index;
  1824. };
  1825. !iobuf
  1826. /include/lattice/stdio.h
  1827. struct _iobuf
  1828. {
  1829. unsigned char *_ptr;            /* current buffer pointer */
  1830. int _rcnt;            /* current byte count for reading */
  1831. int _wcnt;            /* current byte count for writing */
  1832. unsigned char *_base;             /* base address of I/O buffer */
  1833. char _flag;            /* control flags */
  1834. char _file;            /* file number */
  1835. int _size;            /* size of buffer */
  1836. unsigned char _cbuff;            /* single char buffer */
  1837. char _pad;            /* (pad to even number of bytes) */
  1838. };
  1839. !FCB
  1840. /include/lattice/dos.h
  1841. struct FCB
  1842.     {
  1843.     char fcbdrv;        /* drive code */
  1844.     char fcbnam[8];        /* file name */
  1845.     char fcbext[3];        /* file name extension */
  1846.     char fcbexn;        /* extent number */
  1847.     char fcbs1;        /* reserved */
  1848.     char fcbs2;        /* reserved */
  1849.     char fcbrc;        /* record count */
  1850.     char fcbsys[16];    /* reserved */
  1851.     char fcbcr;        /* current record number */
  1852.     short fcbrec;        /* random record number */
  1853.     char fcbovf;        /* random record overflow */
  1854.     };
  1855. !MELT
  1856. /include/lattice/dos.h
  1857. struct MELT
  1858.     {
  1859.     struct MELT *fwd;    /* points to next free block */
  1860. #if SPTR
  1861.     unsigned size;        /* number of MELTs in this block */
  1862. #else
  1863.     long size;        /* number of MELTs in this block */
  1864. #endif
  1865.     };
  1866. !exception
  1867. /include/lattice/math.h
  1868. struct exception 
  1869.     {
  1870.     int type;        /* error type */
  1871.     char *name;        /* math function name */
  1872.     double arg1, arg2;     /* function arguments */
  1873.     double retval;        /* proposed return value */
  1874.     };
  1875. !UFB
  1876. /include/lattice/ios1.h
  1877. struct UFB
  1878. {
  1879. char ufbflg;        /* flags */
  1880. char ufbtyp;
  1881. int ufbfh;        /* file handle */
  1882. };
  1883. !Custom
  1884. /include/hardware/custom.h
  1885. struct Custom {
  1886.     UWORD   bltddat;
  1887.     UWORD   dmaconr;
  1888.     UWORD   vposr;
  1889.     UWORD   vhposr;
  1890.     UWORD   dskdatr;
  1891.     UWORD   joy0dat;
  1892.     UWORD   joy1dat;
  1893.     UWORD   clxdat;
  1894.     UWORD   adkconr;
  1895.     UWORD   pot0dat;
  1896.     UWORD   pot1dat;
  1897.     UWORD   potinp;
  1898.     UWORD   serdatr;
  1899.     UWORD   dskbytr;
  1900.     UWORD   intenar;
  1901.     UWORD   intreqr;
  1902.     APTR    dskpt;
  1903.     UWORD   dsklen;
  1904.     UWORD   dskdat;
  1905.     UWORD   refptr;
  1906.     UWORD   vposw;
  1907.     UWORD   vhposw;
  1908.     UWORD   copcon;
  1909.     UWORD   serdat;
  1910.     UWORD   serper;
  1911.     UWORD   potgo;
  1912.     UWORD   joytest;
  1913.     UWORD   strequ;
  1914.     UWORD   strvbl;
  1915.     UWORD   strhor;
  1916.     UWORD   strlong;
  1917.     UWORD   bltcon0;
  1918.     UWORD   bltcon1;
  1919.     UWORD   bltafwm;
  1920.     UWORD   bltalwm;
  1921.     APTR    bltcpt;
  1922.     APTR    bltbpt;
  1923.     APTR    bltapt;
  1924.     APTR    bltdpt;
  1925.     UWORD   bltsize;
  1926.     UWORD   pad2d[3];
  1927.     UWORD   bltcmod;
  1928.     UWORD   bltbmod;
  1929.     UWORD   bltamod;
  1930.     UWORD   bltdmod;
  1931.     UWORD   pad34[4];
  1932.     UWORD   bltcdat;
  1933.     UWORD   bltbdat;
  1934.     UWORD   bltadat;
  1935.     UWORD   pad3b[4];
  1936.     UWORD   dsksync;
  1937.     ULONG   cop1lc;
  1938.     ULONG   cop2lc;
  1939.     UWORD   copjmp1;
  1940.     UWORD   copjmp2;
  1941.     UWORD   copins;
  1942.     UWORD   diwstrt;
  1943.     UWORD   diwstop;
  1944.     UWORD   ddfstrt;
  1945.     UWORD   ddfstop;
  1946.     UWORD   dmacon;
  1947.     UWORD   clxcon;
  1948.     UWORD   intena;
  1949.     UWORD   intreq;
  1950.     UWORD   adkcon;
  1951.     struct  AudChannel {
  1952.     UWORD    *ac_ptr;    /* ptr to start of waveform data */
  1953.     UWORD    ac_len;        /* length of waveform in words */
  1954.     UWORD    ac_per;        /* sample period */
  1955.     UWORD    ac_vol;        /* volume */
  1956.     UWORD    ac_dat;        /* sample pair */
  1957.     UWORD    ac_pad[2];    /* unused */
  1958.     } aud[4];
  1959.     APTR    bplpt[6];
  1960.     UWORD   pad7c[4];
  1961.     UWORD   bplcon0;
  1962.     UWORD   bplcon1;
  1963.     UWORD   bplcon2;
  1964.     UWORD   pad83;
  1965.     UWORD   bpl1mod;
  1966.     UWORD   bpl2mod;
  1967.     UWORD   pad86[2];
  1968.     UWORD   bpldat[6];
  1969.     UWORD   pad8e[2];
  1970.     APTR    sprpt[8];
  1971.     struct  SpriteDef {
  1972.     UWORD    pos;
  1973.     UWORD    ctl;
  1974.     UWORD    dataa;
  1975.     UWORD    datab;
  1976.     } spr[8];
  1977.     UWORD   color[32];
  1978. };
  1979. !CIA
  1980. /include/hardware/cia.h
  1981. struct CIA {
  1982.     UBYTE   ciapra;
  1983.     UBYTE   pad0[0xff];
  1984.     UBYTE   ciaprb;
  1985.     UBYTE   pad1[0xff];
  1986.     UBYTE   ciaddra;
  1987.     UBYTE   pad2[0xff];
  1988.     UBYTE   ciaddrb;
  1989.     UBYTE   pad3[0xff];
  1990.     UBYTE   ciatalo;
  1991.     UBYTE   pad4[0xff];
  1992.     UBYTE   ciatahi;
  1993.     UBYTE   pad5[0xff];
  1994.     UBYTE   ciatblo;
  1995.     UBYTE   pad6[0xff];
  1996.     UBYTE   ciatbhi;
  1997.     UBYTE   pad7[0xff];
  1998.     UBYTE   ciatodlow;
  1999.     UBYTE   pad8[0xff];
  2000.     UBYTE   ciatodmid;
  2001.     UBYTE   pad9[0xff];
  2002.     UBYTE   ciatodhi;
  2003.     UBYTE   pad10[0xff];
  2004.     UBYTE    unusedreg;
  2005.     UBYTE   pad11[0xff];
  2006.     UBYTE   ciasdr;
  2007.     UBYTE   pad12[0xff];
  2008.     UBYTE   ciaicr;
  2009.     UBYTE   pad13[0xff];
  2010.     UBYTE   ciacra;
  2011.     UBYTE   pad14[0xff];
  2012.     UBYTE   ciacrb;
  2013. };
  2014. !bltnode
  2015. /include/hardware/blit.h
  2016. struct bltnode
  2017. {
  2018.     struct  bltnode *n;
  2019.     int     (*function)();
  2020.     char    stat;
  2021.     short   blitsize;
  2022.     short   beamsync;
  2023.     int     (*cleanup)();
  2024. };
  2025. !narrator
  2026. /include/devices/narrator.h
  2027. struct narrator_rb {
  2028.     struct IOStdReq  message;    /* Standard IORB        */
  2029.     UWORD    rate;            /* Speaking rate (words/minute) */
  2030.     UWORD    pitch;            /* Baseline pitch in Hertz         */
  2031.     UWORD    mode;            /* Pitch mode            */
  2032.     UWORD    sex;            /* Sex of voice            */
  2033.     UBYTE    *ch_masks;        /* Pointer to audio alloc maps    */
  2034.     UWORD    nm_masks;        /* Number of audio alloc maps     */
  2035.     UWORD    volume;            /* Volume. 0 (off) thru 64     */
  2036.     UWORD   sampfreq;        /* Audio sampling freq         */
  2037.     UBYTE    mouths;            /* If non-zero, generate mouths */
  2038.     UBYTE    chanmask;        /* Which ch mask used (internal)*/
  2039.     UBYTE    numchan;        /* Num ch masks used (internal) */
  2040.     UBYTE    pad;            /* For alignment        */
  2041.     };
  2042. !mouth
  2043. /include/devices/narrator.h
  2044. struct mouth_rb {
  2045.     struct    narrator_rb voice;    /* Speech IORB            */
  2046.     UBYTE    width;            /* Width (returned value)    */
  2047.     UBYTE    height;            /* Height (returned value)    */
  2048.     UBYTE    shape;            /* Internal use, do not modify  */
  2049.     UBYTE    pad;            /* For alignment        */
  2050.     };
  2051. !KeyMap
  2052. /include/devices/keymap.h
  2053. struct    KeyMap {
  2054.     APTR    km_LoKeyMapTypes;
  2055.     APTR    km_LoKeyMap;
  2056.     APTR    km_LoCapsable;
  2057.     APTR    km_LoRepeatable;
  2058.     APTR    km_HiKeyMapTypes;
  2059.     APTR    km_HiKeyMap;
  2060.     APTR    km_HiCapsable;
  2061.     APTR    km_HiRepeatable;
  2062. };
  2063. !timeval
  2064. /include/devices/timer.h
  2065. struct timeval {
  2066.     ULONG tv_secs;
  2067.     ULONG tv_micro;
  2068. };
  2069. !timerequest
  2070. /include/devices/timer.h
  2071. struct timerequest {
  2072.     struct IORequest tr_node;
  2073.     struct timeval tr_time;
  2074. };
  2075. !IOPrtCmdReq
  2076. /include/devices/printer.h
  2077. struct IOPrtCmdReq {
  2078.     struct  Message io_Message;
  2079.     struct  Device  *io_Device;        /* device node pointer  */
  2080.     struct  Unit    *io_Unit;        /* unit (driver private)*/
  2081.     UWORD   io_Command;            /* device command */
  2082.     UBYTE   io_Flags;
  2083.     BYTE    io_Error;            /* error or warning num */
  2084.     UWORD   io_PrtCommand;        /* printer command */
  2085.     UBYTE   io_Parm0;            /* first command parameter */
  2086.     UBYTE   io_Parm1;            /* second command parameter */
  2087.     UBYTE   io_Parm2;            /* third command parameter */
  2088.     UBYTE   io_Parm3;            /* fourth command parameter */
  2089. };
  2090. !IODRPReq
  2091. /include/devices/printer.h
  2092. struct IODRPReq {
  2093.     struct  Message io_Message;
  2094.     struct  Device  *io_Device;        /* device node pointer  */
  2095.     struct  Unit    *io_Unit;        /* unit (driver private)*/
  2096.     UWORD   io_Command;            /* device command */
  2097.     UBYTE   io_Flags;
  2098.     BYTE    io_Error;            /* error or warning num */
  2099.     struct  RastPort *io_RastPort;  /* raster port */
  2100.     struct  ColorMap *io_ColorMap;  /* color map */
  2101.     ULONG   io_Modes;            /* graphics viewport modes */
  2102.     UWORD   io_SrcX;            /* source x origin */
  2103.     UWORD   io_SrcY;            /* source y origin */
  2104.     UWORD   io_SrcWidth;        /* source x width */
  2105.     UWORD   io_SrcHeight;        /* source x height */
  2106.     LONG    io_DestCols;        /* destination x width */
  2107.     LONG    io_DestRows;        /* destination y height */
  2108.     UWORD   io_Special;            /* option flags */
  2109. };
  2110. !IOTArray
  2111. /include/devices/serial.h
  2112. struct  IOTArray {
  2113.         ULONG TermArray0; 
  2114.         ULONG TermArray1;
  2115. };
  2116. !IOExtSer
  2117. /include/devices/serial.h
  2118. struct  IOExtSer {
  2119.         struct   IOStdReq IOSer;
  2120.  
  2121. /*     STRUCT   MsgNode
  2122. *   0   APTR     Succ
  2123. *   4   APTR     Pred
  2124. *   8   UBYTE    Type
  2125. *   9   UBYTE    Pri
  2126. *   A   APTR     Name
  2127. *   E   APTR     ReplyPort
  2128. *  12   UWORD    MNLength
  2129. *     STRUCT   IOExt
  2130. *  14   APTR     io_Device
  2131. *  18   APTR     io_Unit
  2132. *  1C   UWORD    io_Command
  2133. *  1E   UBYTE    io_Flags
  2134. *  1F   UBYTE    io_Error
  2135. *     STRUCT   IOStdExt
  2136. *  20   ULONG    io_Actual
  2137. *  24   ULONG    io_Length
  2138. *  28   APTR     io_Data
  2139. *  2C   ULONG    io_Offset
  2140. *
  2141.  
  2142. * IMPORTANT !! DON'T CHANGE the long-word alignment of ANY of these fields !!
  2143. *                           You can add to the end if you must do something.
  2144. *  30 */  
  2145.    ULONG   io_CtlChar;    /* control char's (order = xON,xOFF,INQ,ACK) */
  2146.    ULONG   io_RBufLen;    /* length in bytes of serial port's read buffer */
  2147.    ULONG   io_WBufLen;    /* length in bytes of serial port's write buffer */
  2148.    ULONG   io_Baud;       /* baud rate requested (true baud) */
  2149.    ULONG   io_BrkTime;    /* duration of break signal in MICROseconds */
  2150.    struct  IOTArray io_TermArray; /* termination character array */
  2151.    UBYTE   io_ReadLen;    /* bits per read character (bit count) */
  2152.    UBYTE   io_WriteLen;   /* bits per write character (bit count) */
  2153.    UBYTE   io_StopBits;   /* stopbits for read (count) */
  2154.    UBYTE   io_SerFlags;   /* see SERFLAGS bit definitions above  */
  2155.    UWORD   io_Status;  
  2156. };
  2157. !GamePortTrigger
  2158. /include/devices/gameport.h
  2159. struct GamePortTrigger {
  2160.     UWORD    gpt_Keys;    /* key transition triggers */
  2161.     UWORD    gpt_Timeout;    /* time trigger (vertical blank units) */
  2162.     UWORD    gpt_XDelta;    /* X distance trigger */
  2163.     UWORD    gpt_YDelta;    /* Y distance trigger */
  2164. };
  2165. !IOAudio
  2166. /include/devices/audio.h
  2167. struct IOAudio {
  2168.     struct IORequest ioa_Request;
  2169.     WORD ioa_AllocKey;
  2170.     UBYTE *ioa_Data;
  2171.     ULONG ioa_Length;
  2172.     UWORD ioa_Period;
  2173.     UWORD ioa_Volume;
  2174.     UWORD ioa_Cycles;
  2175.     struct Message ioa_WriteMsg;
  2176. };
  2177. !ClipboardUnitPartial
  2178. /include/devices/clipboard.h
  2179. struct ClipboardUnitPartial {
  2180.     struct  Node cu_Node;        /* list of units */
  2181.     ULONG   cu_UnitNum;            /* unit number for this unit */
  2182.     /* the remaining unit data is private to the device */
  2183. };
  2184. !IOClipReq
  2185. /include/devices/clipboard.h
  2186. struct IOClipReq {
  2187.     struct  Message io_Message;
  2188.     struct  Device  *io_Device;        /* device node pointer  */
  2189.     struct  Unit    *io_Unit;        /* unit (driver private)*/
  2190.     UWORD   io_Command;            /* device command */
  2191.     UBYTE   io_Flags;            /* including QUICK and SATISFY */
  2192.     BYTE    io_Error;            /* error or warning num */
  2193.     ULONG   io_Actual;            /* number of bytes transferred */
  2194.     ULONG   io_Length;            /* number of bytes requested */
  2195.     STRPTR  io_Data;            /* either clip stream or post port */
  2196.     ULONG   io_Offset;            /* offset in clip stream */
  2197.     LONG    io_ClipID;            /* ordinal clip identifier */
  2198. };
  2199. !SatisfyMsg
  2200. /include/devices/clipboard.h
  2201. struct SatisfyMsg {
  2202.     struct  Message sm_Msg;        /* the length will be 6 */
  2203.     UWORD   sm_Unit;            /* which clip unit this is */
  2204.     LONG    sm_ClipID;            /* the clip identifier of the post */
  2205. };
  2206. !ClipStream
  2207. /include/devices/clipboard.h
  2208. struct ClipStream {
  2209.     ULONG   cs_Length;            /* total length of the clip stream */
  2210.     UWORD   cs_Unit;            /* clip unit (set by read) */
  2211.     /* struct ClipItem data immediately follows */
  2212. };
  2213. !ClipItem
  2214. /include/devices/clipboard.h
  2215. struct ClipItem {
  2216.     ULONG   ci_Length;            /* total length of the clip item */
  2217.     UWORD   ci_NameLength;        /* clip name length, including null */
  2218.     /* the null terminated name immediately follows */
  2219.     /* the specific type struct immediately follows */
  2220. };
  2221. !ClipANSI
  2222. /include/devices/clipboard.h
  2223. struct ClipANSI {
  2224.     ULONG   ca_Length;            /* number of ANSI bytes */
  2225. /*    this consists of a byte stream of ANSI 3.64 bytes whose length is
  2226. /*    ca_Length.  Private escape sequences are as for the console and
  2227. /*    printer devices, with the following addition to select fonts:
  2228. /*    <DCS> x<font-name><ST>
  2229. /*      where <DCS> is the byte $90 or the string <ESC>P,
  2230. /*      " x" are the two characters space and lower case x,
  2231. /*      <font-name> is the name of the amiga font in lower case sans the
  2232. /*        ".font" suffix, and
  2233. /*    <ST> is the byte $9C or the string <ESC>|
  2234. /*
  2235. /**/
  2236. };
  2237. !ClipBitMap
  2238. /include/devices/clipboard.h
  2239. struct ClipBitMap {
  2240.     WORD    cbm_Modes;            /* graphics viewport modes */
  2241.     UWORD   cbm_XSize;            /* width in pixels */
  2242.     UWORD   cbm_Rows;            /* height */
  2243.     UBYTE   cbm_Depth;            /* depth */
  2244.     UBYTE   cbm_CMapWords;        /* number of elements in color map */
  2245.     UWORD   cbm_XOffset;        /* Offset of the */
  2246.     UWORD   cbm_YOffset;        /*   clip in the */
  2247.     UBYTE   cbm_ZOffset;        /*   original source, */
  2248.     UBYTE   cbm_CMapOffset;        /*   including the color map offset */
  2249.     ULONG   cbm_BitDataLength;        /* # of bitmap bytes after color map */
  2250.     /* the color map words follow */    /* color map */
  2251.     /* there are cbm_CMapSize words of color map */
  2252.  
  2253.     /* the bit data bytes follow */    /* bit plane data */
  2254.  
  2255.     /* bit data encoding */
  2256.     /*
  2257.     /* to interpret the byte data, read it as a byte stream with header
  2258.     /* bytes of two types, depending on bit 7 of the byte.
  2259.     /* +-7+6-5-4-3-2-1-0+
  2260.     /* | 0|   <count>   | literal stream: take the next count bytes as literal
  2261.     /* +--+-------------+    bytes to represent the bit plane values of the
  2262.     /*                clip.  Each row starts with the MSB of a new
  2263.     /* byte (no shift is implied by the Offset fields).  The next row is
  2264.     /* implicit when enough data has been provided to fill a row, the next
  2265.     /* plane is implicit when enougn data has been provided to fill a plane.
  2266.     /* The <count> can cause the stream to wrap both rows and planes.
  2267.     /* A <count> of zero is special and causes the remaining stream (enough
  2268.     /* to describe the clip) to be interpreted entirely as literal bytes.
  2269.     /*
  2270.     /*     or
  2271.     /* +-7+6-5-4-3-2-1-0+
  2272.     /* | 1|  <repeat>   |  repeat stream: take the next byte and repeat it
  2273.     /* +--+-------------+    <repeat> times, where zero indicates only one
  2274.     /*                occurance of the byte.  The repeated bytes are
  2275.     /* otherwise identical to a literal stream consisting of <repeat>+1 of the
  2276.     /* bytes.
  2277.     /*
  2278.     /**/
  2279. };
  2280. !IOPArray
  2281. /include/devices/parallel.h
  2282. struct  IOPArray {
  2283.         ULONG PTermArray0;
  2284.         ULONG PTermArray1;
  2285. };
  2286. !IOExtPar
  2287. /include/devices/parallel.h
  2288. struct   IOExtPar {
  2289.         struct   IOStdReq IOPar;
  2290.  
  2291. /*     STRUCT   MsgNode
  2292. *   0   APTR     Succ
  2293. *   4   APTR     Pred
  2294. *   8   UBYTE    Type
  2295. *   9   UBYTE    Pri
  2296. *   A   APTR     Name
  2297. *   E   APTR     ReplyPort
  2298. *  12   UWORD    MNLength
  2299. *     STRUCT   IOExt
  2300. *  14   APTR     io_Device
  2301. *  18   APTR     io_Unit
  2302. *  1C   UWORD    io_Command
  2303. *  1E   UBYTE    io_Flags
  2304. *  1F   UBYTE    io_Error
  2305. *     STRUCT   IOStdExt
  2306. *  20   ULONG    io_Actual
  2307. *  24   ULONG    io_Length
  2308. *  28   APTR     io_Data
  2309. *  2C   ULONG    io_Offset
  2310. *  30 */
  2311.         ULONG   io_PWBufLen;     /* length of parallel port's write buffer */
  2312.         UBYTE   io_Status;       /* status of parallel port and registers */
  2313.         UBYTE   io_ParFlags;     /* see PARFLAGS bit definitions above */
  2314.         struct  IOPArray io_PTermArray; /* termination character array */
  2315. };
  2316. !IOExtTD
  2317. /include/devices/trackdisk.h
  2318. struct IOExtTD {
  2319.     struct    IOStdReq iotd_Req;
  2320.     ULONG    iotd_Count;
  2321.     ULONG    iotd_SecLabel;
  2322. };
  2323. !BootBlock
  2324. /include/devices/bootblock.h
  2325. struct BootBlock {
  2326.     UBYTE    bb_id[4];        /* 4 character identifier */
  2327.     LONG    bb_chksum;    /* boot block checksum (balance) */
  2328.     LONG    bb_dosblock;    /* reserved for DOS patch */
  2329. };
  2330. !InputEvent
  2331. /include/devices/inputevent.h
  2332. struct InputEvent {
  2333.     struct  InputEvent *ie_NextEvent;    /* the chronologically next event */
  2334.     UBYTE   ie_Class;        /* the input event class */
  2335.     UBYTE   ie_SubClass;    /* optional subclass of the class */
  2336.     UWORD   ie_Code;        /* the input event code */
  2337.     UWORD   ie_Qualifier;    /* qualifiers in effect for the event */
  2338.     union {
  2339.     struct {
  2340.         WORD    ie_x;        /* the pointer position for the event */
  2341.         WORD    ie_y;
  2342.     } ie_xy;
  2343.     APTR    ie_addr;
  2344.     } ie_position;
  2345.     struct timeval ie_TimeStamp;    /* the system tick at the event */
  2346. };
  2347.